我想添加一個子對象的物體,像添加子對象到對象
var myObj = myObj || {};
myObj.prototype.subObj = {
'funk': function() {
console.log('Funky success');
}
};
,但我不斷收到錯誤
Uncaught TypeError: Cannot set property 'subObj' of undefined
我想添加一個子對象的物體,像添加子對象到對象
var myObj = myObj || {};
myObj.prototype.subObj = {
'funk': function() {
console.log('Funky success');
}
};
,但我不斷收到錯誤
Uncaught TypeError: Cannot set property 'subObj' of undefined
如果你想使用的原型,你必須創建您的物品與功能:
function myObj() { }
myObj.prototype.subObj = {
'funk': function() {
console.log('Funky success');
}
};
var obj = new myObj();
obj.subObj.funk(); // => 'Funky success'
但你可以始終做到:
var myObj = {}
myObj.subObj = {
'funk': function() {
console.log('Funky success');
}
};
myObj.subObj.funk(); // => 'Funky success'
let myObj = {
subObj: {
funk: function() {
// whatever
}
}
}
這是我試圖設置命名空間的一個過於簡單化的例子,也就是說,我將在單獨的文件中聲明這些子對象以保持一切清潔,因此您在這裏完成的操作對我而言不起作用。但評論中的人讓我擺脫了麻煩。不管怎麼說,還是要謝謝你! – wogsland
您不能分配到myObj.prototype.subObj
除非myObj.prototype
已經存在,並且包含一個對象。 Javascript不會自動在層次結構中創建中間對象。所以,你可以這樣做:
var myObj = myObj || { prototype: {} };
myObj.prototype.subObj = {
'funk': function() {
console.log('Funky success');
}
};
在一個非常相似的方式在ES6你的方法,你可以放心地做這樣的;
var myObj = myObj || {};
myObj.__proto__.subObj = {
'funk': function() {
console.log('Funky success');
}
};
myObj.subObj.funk();
但你也可以使用Object.create()
方法如下:
var prototype = {
subObj : {
funk: function() {
console.log('Funky success');
}
}
},
myObj = myObj || Object.create(prototype);
myObj.subObj.funk();
因爲原型是未定義 – atul
的*原型*是*函數*不*對象的屬性*。您可以將您的子對象附加到* myObj.subObj *。 –
對象的實例沒有原型。類型(它的構造函數)有它。 –