读一本关于javascript的书(我不知道规则是否允许我写标题和作者......)我注意到一些我想要更好理解的函数:
如果将函数分配给对象的属性,则将其称为方法 宾语。在对象上或通过对象调用函数时,该对象是调用 上下文或函数的这个值。
我想了解调用 on 对象的函数与调用通过对象的函数之间的区别。
答案 0 :(得分:0)
这可能不完全正确,但这是我对差异的理解。
在调用对象方法的情况下,在方法本身中,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);