我正在尝试在JavaScript中使用Object.Create。 我目前有以下代码:
var vehicle = {
getModel: function () {
console.log( "The model of this vehicle is.." + this.model );
}
};
var car = Object.create(vehicle, {
"id": {
value: 9,
},
"model": {
value: "Ford",
}
});
var van = Object.create(vehicle, {
"id": {
value: 10,
},
"model": {
value: "Big Van",
enumerable: true
},
"make": {
value: "Warrior",
},
"getMake": function () {
console.log( "The make of this vehicle is.." + this.make );
}
});
我试图为 getMake 向 van 添加一个函数,但我收到错误:
类型错误:当我调用时,对象 # 的属性"getMake"不是函数:
van.getMake();
这可能吗? 你是怎么做到的?
默认情况下
,以这种方式创建的属性不可枚举。 这可能会导致您的问题。
试试这个(未经测试):
"getMake": { value: function () {
console.log( "The make of this vehicle is.." + this.make )
}, enumerable: true };
编辑 看起来这是有效的,因为我们传递的是一个对象,而不仅仅是值。 枚举是不必要的。
你需要传递一个定义属性的对象,而不仅仅是值:
"getMake": {value:function () {
console.log( "The make of this vehicle is.." + this.make );
}}
参考
请注意,在Javascript中执行OOP的常用方法不是使用Object.create,而是使用原型。