Добавить функцию к объекту JavaScript с помощью Object.Create

Я пытаюсь использовать Object.Create в JavaScript. В настоящее время у меня есть следующий код:

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, но я получаю ошибку:

TypeError: Свойство getMake объекта # не является функцией при вызове:

van.getMake ();

Это возможно? Как ты делаешь это?

2 ответа

Решение

Свойства, созданные таким образом, не перечисляются по умолчанию. Это может быть причиной вашей проблемы.

Попробуйте это (не проверено):

"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 не в использовании Object.create, а в использовании прототипа.

Другие вопросы по тегам