以從下面的例子: http://www.phpied.com/3-ways-to-define-a-javascript-class/Javascript:使用對象字面量時,屬性的排序很重要嗎?
var apple = {
type: "macintosh",
color: "red",
getInfo: function() {
return this.color + ' ' + this.type + ' apple';
}
};
現在我移動的getInfo()方法在我的對象聲明的頂部。
var apple = {
getInfo: function() {
return this.color + ' ' + this.type + ' apple';
},
type: "macintosh",
color: "red",
};
apple.getInfo();
red macintosh apple
我期待JavaScript解析器/編譯器失敗,因爲this.color和this.type尚未定義。這是如何在內部工作的?
(這個問題本來是一個ExtJS的框架問題在這裏:ExtJS: settings properties via a function on the Prototype: is it a safe pattern?,但我意識到這是一個更一般的JavaScript的問題,因此這個新)
一旦你調用'apple.getInfo();'已經定義了整個蘋果對象。 – bumpy
好問題,好問。 –
即使您向該函數添加了永遠不會定義的屬性,解析器也不會失敗。這與JavaScript是[https://en.wikipedia.org/wiki/Duck_typing](Duck Typed))有關。 – Sam