2017-09-02 23 views
0

我可以理解爲什麼要使用呼叫,並在下面的例子適用:調用和應用示例可以像這樣的代碼行爲?

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 

如果我想打印「不是我」,那麼我可以直接在anotherObject創建sayName並調用它直接像這樣:

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

,所以我只是想知道有沒有什麼概念的不是寫在多個對象相同功能或U的任何其他優勢/宗旨,以節省內存唱這個叫?

謝謝!

回答

0

你必須在JS中模擬OOP才能達到你想要的。 使用原型鏈創建一個類,然後實例化它。 ,即:

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

謝謝你!!但我不知道採用不同的方法來做這件事,我有興趣知道我們什麼時候使用電話,有什麼具體的優勢,我們將使用電話 – CodeWithCoffee

+0

call()允許您覆蓋「this」關鍵字。這指向範圍內原型鏈的所有者。使用呼叫,您傳遞的第一個參數成爲「this」。優勢依賴於您的代碼架構,可能會或可能不會有優勢。看看這裏:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call –

相關問題