我想在Javascript中初始化一些公共变量,但它只适用于字符串而不适用于数字。有什么原因?
var Person = function(_name) {
this._name = _name;
this.__age = 20;
this._occupation = "Javascript Programmer";
};
var person = new Person("Chandra");
console.log(person._age); // Prints undefined
console.log(person._name); // Prints Chandra correctly.
这是因为_age是一个数字,而不是"自动装箱"成为数字对象?
答案 0 :(得分:5)
你第一次有额外的下划线。
this.__age = 20;
应该是
this._age = 20;
答案 1 :(得分:0)
解决方案只是一个错字。在第3行,您说this.__age = 20;
。还有一个额外的下划线,所以你应该说this._age = 20;
。
而AFAIK,JavaScript并没有对对象进行任何区分。一切(除了null和未定义,我猜)可以是一个对象,只要你称之为正确的名称,在正确的范围内,它将像往常一样初始化。此外,您创建的字符串和数字实际上是字符串和数字基元(请注意小写)。当你隐式调用toString()时,数字会保持一个数字,而不是一个Object。
http://javascriptweblog.wordpress.com/2010/09/27/the-secret-life-of-javascript-primitives/