2015-09-29 44 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