Reputation: 4552
I'm trying to use Object.Create in JavaScript. I currently have the following code:
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 );
}
});
I've tried to add a function to van for getMake but I get the error:
TypeError: Property 'getMake' of object # is not a function when I call:
van.getMake();
Is this possible? How do you do it?
Upvotes: 4
Views: 1598
Reputation: 1790
Properties created that way are not enumerable by default. This may be causing your issue.
Try this(untested):
"getMake": { value: function () {
console.log( "The make of this vehicle is.." + this.make )
}, enumerable: true };
Edit It looks like this is working because we are passing an object and not just the value. The enumerable is unnecessary.
Upvotes: 6
Reputation: 382150
You need to pass an object defining the property, not just the value :
"getMake": {value:function () {
console.log( "The make of this vehicle is.." + this.make );
}}
Note that the usual way to do OOP in Javascript isn't in using Object.create but in using prototype.
Upvotes: 2