Question

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?

Was it helpful?

Solution

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.

OTHER TIPS

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 );
 }}

Reference

Note that the usual way to do OOP in Javascript isn't in using Object.create but in using prototype.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top