var my_obj = Object.create({}, {
getFoo: {
value: function() {
return this.foo;
}
}
});
my_obj.foo = 1;
alert(my_obj.getFoo());
爲什麼getFoo
的功能代替了value
?爲什麼這個特定的JavaScript代碼以這種方式工作?
var my_obj = Object.create({}, {
getFoo: {
value: function() {
return this.foo;
}
}
});
my_obj.foo = 1;
alert(my_obj.getFoo());
爲什麼getFoo
的功能代替了value
?爲什麼這個特定的JavaScript代碼以這種方式工作?
由於Object.create
取property descriptors作爲輸入:
propertiesObject
如果指定,而不是
undefined
,一個對象,其可枚舉自己的屬性(即,沿着它的原型在其自身定義的那些性質,而不是枚舉的屬性鏈)指定要添加到新創建的對象的屬性描述符以及相應的屬性名稱。
和value
指:
value
與屬性相關聯的值。 (僅限數據描述符)。默認爲undefined
。
但作爲getFoo
暗示,它可能是更好的將其定義爲訪問屬性:
var my_obj = Object.create({}, {
foo: {
get: function(){
return this._foo; },
set: function(newValue){
this._foo = newValue;
}
}
});
其實..它只是因爲你設置的值等於一個功能。
如果您嘗試以匿名方式運行該功能,則必須在聲明後包含該功能。觀察:
x = { y : function(){return 2;}}
x.y
function(){return 2;}
x = {y : function(){return 2;}()}
x.y
2
注意函數聲明後的尾部()。
對不起1行代碼,來自javascript控制檯。