我想添加一个子对象的物体,像添加子对象到对象
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 *。 –
对象的实例没有原型。类型(它的构造函数)有它。 –