Добавить функцию к объекту 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, а в использовании прототипа.