2016-04-25 41 views
0

我們如何定義特定於JavaScript類範圍的變量?定義JavaScript類的局部變量

在這個fiddle下面,我想定義一個名爲name的變量,具體到Person這個類。我得到一個錯誤SyntaxError: missing : after property id

var Person = { 
    var name = "Jake"; 
    printName: function() 
    { 
    document.getElementById("personName").val(this.name); 
    } 
}; 

Person.printName(); 
+1

'Person'是**對象**,不是類。對象只能有屬性。他們沒有「局部變量」的概念。 –

回答

6

你正在創建Person錯誤和val()不是一個JavaScript方法。嘗試如下。

var Person = { 
 
    name: "Jake", 
 
    printName: function() { 
 
    document.getElementById("personName").value = this.name; 
 
    } 
 
}; 
 

 
Person.printName();
<input type="text" id="personName">

1

你有你如何寫代碼中的語法錯誤。

您在嘗試使用完整的JavaScript語句(如var name = "jake";)時定義了Person作爲對象。對象採用鍵和值對。所以寫塊正確的方法是這樣的:

var Person = { 
    name: "Jake", 
    printName: function() { 
    document.getElementById("personName").value = this.name; 
    } 
}; 

Person.printName(); 

如果你正在尋找創造的人是一個「類」,你要考慮的替代語法是:

function Person(name) { 
    this.name = name; 
    this.printName = function() { 
    document.getElementById("personName").value = this.name; 
    } 
} 

var jake = new Person("Jake"); 

jake.printName(); 

讓我知道如果你有任何問題!

+0

'.val(this.name);'是jQuery。 – Andy

+1

嘗試'.value = this.name'; – Andy

1

您可以使用閉包來模擬私有屬性。

function createPerson() { 
    var name = 'Jake'; 

    return { 
    printName: function() { 
     return name; 
    } 
    }; 
} 

var person = createPerson(); 
console.log(person.printName); // prints 'Jake' 
console.log(person.name); // prints undefined 
console.log(name) // throws 'Undefined variable' error 
1

如果你想使用jQuery:

var Person = { 
    name: "Jake", 
    printName: function() { 
    $("#personName").val(this.name); 
    } 
}; 
Person.printName(); 

https://jsfiddle.net/zmyLwtc0/2/

* val()是Element對象jQuery的方法。在JS中,我們使用屬性value來代替。