看一本關於JavaScript的(我不知道,如果規則允許我寫標題和作者...)我注意到一些有關的功能,我想更好地瞭解:在對象上調用的函數和通過對象調用的函數之間有什麼區別?
如果函數被分配給一個對象的屬性,它被稱爲該對象的一種方法。當在一個對象上或通過一個對象調用一個函數時,該對象就是調用 上下文或該函數的這個值。
我想了解什麼是對對象的功能之間的區別調用和功能通過對象調用。
看一本關於JavaScript的(我不知道,如果規則允許我寫標題和作者...)我注意到一些有關的功能,我想更好地瞭解:在對象上調用的函數和通過對象調用的函數之間有什麼區別?
如果函數被分配給一個對象的屬性,它被稱爲該對象的一種方法。當在一個對象上或通過一個對象調用一個函數時,該對象就是調用 上下文或該函數的這個值。
我想了解什麼是對對象的功能之間的區別調用和功能通過對象調用。
這可能不完全正確,但它是我對差異的理解。
如果調用對象方法,則在方法本身內,this
會自動引用通過其調用方法的對象。
而在某個對象上調用某個函數時,可以將this
的上下文綁定到您想要的任何對象。該對象不需要以任何方式與該功能相關,並且可以將相同的功能一個接一個地用於多個不同的對象。
編輯基於BERGI的反饋切換上和通過引用。
例如:
function Animal(name, sound) {
this.name = name;
this.sound = sound;
}
Animal.prototype.speak = function() {
console.log(this.name + ' says "' + this.sound + '"');
};
function speak() {
console.log(this.name + ' says "' + this.sound + '"');
}
var cat = new Animal('Garfield', 'meow');
var dog = new Animal('Odie', 'woof');
// Invoke function through object
cat.speak();
dog.speak();
// Invoke function on object
speak.call(cat);
speak.call(dog);
這意味着同樣的事情。 – dandavis
希望這個鏈接將提供很好的解釋[鏈接](https://www.w3schools.com/js/js_function_invocation.asp) – Thennarasan
@Thennarasan - 它沒有描述這個問題所提出的問題(W3Schools是一般來說很糟糕) – Quentin