Javascript:为什么这个变量初始化不会对数字产生影响?

时间:2014-06-21 04:35:19

标签: javascript

我想在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是一个数字,而不是"自动装箱"成为数字对象?

2 个答案:

答案 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/