Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add Function to JavaScript Object using Object.Create

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?

like image 311
davy Avatar asked Feb 19 '23 09:02

davy


1 Answers

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.

like image 192
Ryan O'Neill Avatar answered Mar 04 '23 08:03

Ryan O'Neill