4

我正在尝试在 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 添加一个函数,但出现错误:

TypeError:当我调用时,对象# 的属性“getMake”不是函数:

van.getMake();

这可能吗?你怎么做呢?

4

2 回答 2

6

默认情况下,以这种方式创建的属性不可枚举。这可能会导致您的问题。

试试这个(未经测试):

"getMake": { value: function () {
       console.log( "The make of this vehicle is.." + this.make )
   }, enumerable: true };

编辑看起来这很有效,因为我们正在传递一个对象而不仅仅是值。可枚举是不必要的。

于 2012-11-26T13:01:08.650 回答
2

您需要传递定义属性的对象,而不仅仅是值:

 "getMake": {value:function () {
     console.log( "The make of this vehicle is.." + this.make );
 }}

参考

请注意,在 Javascript 中执行 OOP 的常用方法不是使用 Object.create 而是使用原型

于 2012-11-26T13:03:17.520 回答