我正在尝试将子对象添加到像
这样的对象var myObj = myObj || {};
myObj.prototype.subObj = {
'funk': function() {
console.log('Funky success');
}
};
但我一直收到错误
未捕获的TypeError:无法设置未定义的属性“subObj”
答案 0 :(得分:2)
如果要使用原型,则必须使用函数创建对象:
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'
答案 1 :(得分:0)
let myObj = {
subObj: {
funk: function () {
// whatever
}
}
}
答案 2 :(得分:0)
除非myObj.prototype.subObj
已存在且包含对象,否则您无法分配到myObj.prototype
。 Javascript不会自动在层次结构中创建中间对象。所以你可以这样做:
var myObj = myObj || { prototype: {} };
myObj.prototype.subObj = {
'funk': function() {
console.log('Funky success');
}
};
答案 3 :(得分:0)
以与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();