2017-09-02 2 views
0

Je peux comprendre pourquoi utiliser l'appel et d'appliquer dans l'exemple ci-dessous:Exemple d'appel et d'application peut se comporter dans un code comme celui-ci?

myObject = { name: "shafizzle", 
sayName: function() { console.log(this.name) } 
}; 
myObject.sayName(); 

anotherObject = { name: "not me" } 

myObject.sayName.call (anotherObject); // It will print "not me" as its called with anotherObject 

MAIS

Si je veux imprimer « pas moi » je peux créer directement sayName dans anotherObject et l'appeler directement comme ceci:

anotherObject = { name: "not me ", 
sayName: function() { console.log(this.name) } 
}; 
anotherObject .sayName(); 

alors je me demandais est-il un concept à économiser de la mémoire par ne pas écrire la même fonction dans plusieurs objets ou tout autre avantage/but de u chanter appel pour cela?

Merci!

Répondre

0

Vous devez simuler OOP dans JS afin d'obtenir ce que vous voulez. Créez une classe en utilisant la chaîne du prototype, puis installez-la simplement. i.e .:

function MyClass(name) { 
    this._name = name; 
    console.log("Hello, I am " + this._name); 
} 

MyClass.prototype._name; // Stores the name 

MyClass.prototype.sayName = function() { 
    console.log("I say: " + this._name); 
} 

var object1 = new MyClass("Johnny"); 
var object2 = new MyClass("Mary"); 

object1.sayName(); // Will output: I am Johnny 
object2.sayName(); // Will output: I am Mary 
+0

Merci à vous !! Mais plutôt que de connaître la méthode différente de faire cela, je suis intéressé à savoir quand nous utilisons appel ici, y at-il un avantage spécifique que nous obtiendrons de l'appel – CodeWithCoffee

+0

call() vous permet de remplacer le mot-clé "this". Cela indique le propriétaire de la chaîne de prototypes. En utilisant call, le premier argument que vous passez devient le "this". L'avantage repose sur votre architecture de code, pourrait être ou ne pas être avantageux. Jetez un oeil ici: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call –