2015-09-29 42 views
0

我是在读一本书,这里的代码在JavaScript对象是创建使用参数

function Person(name) { 

    this.name = name; 
} 

Person.prototype.legs = 2; 

var newperson = new Person("Joe"), prop; 


for (prop in newperson) { 
    if (newperson.hasOwnProperty(prop)) { 
     console.log(prop + ":" + newperson[prop]); 

    } 

} 

我只是想知道什么是**道具*本

var newperson = new Person("Joe"), prop; 

这是不是肯定的争论,所以道具在这里意味着什么。它是一个可选值吗?感谢

+2

',prop;'只是变量'prop'的定义 – MysterX

+1

很好地混淆以引起新手头痛。不要这样写代码,它只会导致这样的问题。 – deceze

回答

2
var newperson = new Person("Joe"), prop; 

相当于

var newperson = new Person("Joe"); 
var prop; 
-1

的JavaScript如下的变量词法范围

汇编阶段,JavaScript引擎只会追赶变量声明。

所以,var newperson = new Person("Joe"), prop;编译阶段后两个变量都存储在范围内没有区别。两者都是undefined

执行阶段,JavaScript会发现newperson的初始化为Person对象。 prop尚未初始化,因此undefined