2016-05-05 9 views
0

So fragte ich mich, ob dies der richtige Weg ist, Funktionen zu einem Objekt hinzuzufügen, das durch Objektliterale erstellt wird.Zusätzliche Funktionen zu Objektliteralen hinzufügen, nachdem es erstellt wurde

var person = { 
 
    firstname: "default", 
 
    lastname: "default", 
 
    greet: function() { 
 
    return "hi " + this.firstname; 
 
    } 
 
} 
 

 
var me = Object.create(person); 
 

 
me.myFunction = function() { 
 
    return console.log("meow"); 
 
}; 
 

 
console.log(me.myFunction());

aber es eine undefinierte nach miauen zurückkehrt, gibt es keinen Grund, warum es so tun würde?

Antwort

1

Wenn Sie

return console.log("meow"); 

schreiben Sie nicht zurück „Miau“, aber der Rückgabewert von console.log, die nicht definiert ist. Ändern Sie den Code wie folgt aus:

me.myFunction = function() { 
    return "meow"; 
}; 

console.log(me.myFunction()); 
+0

Dank wieder! diesen Teil komplett übersehen. ist das der richtige Weg, um Methoden zu einem Objektliteral hinzuzufügen, nachdem es erstellt wurde? – lonestarz

+0

Ja, es ist völlig in Ordnung. – phihag

0

console.log() keinen Wert zurückgibt, so dass der „Rückfall“ Wert der Funktion ist undefined.

Da Sie den Rückgabewert von console.log zurückgeben und erneut protokollieren, erhalten Sie .

All dies hat nichts zu tun mit dem Ändern eines Objekts oder eines Prototyps.

0

sollten Sie kehren meow innerhalb myFunction:

var person = { 
 
    firstname: "default", 
 
    lastname: "default", 
 
    greet: function() { 
 
    return "hi " + this.firstname; 
 
    } 
 
} 
 

 
var me = Object.create(person); 
 

 
me.myFunction = function() { 
 
    return "meow"; 
 
}; 
 

 
document.write(me.myFunction());

0
var person = { 
    firstname: "default", 
    lastname: "default", 
    greet: function() { 
    return "hi " + this.firstname; 
    } 
} 

var me = Object.create(person); 

me.myFunction = function() { 
    return console.log("meow"); 
}; 

console.log(me.myFunction()); 

warum Sie console.log zurückkehren() ist es nichts