看一本关于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