2017-10-04 130 views
0

看一本关于JavaScript的(我不知道,如果规则允许我写标题和作者...)我注意到一些有关的功能,我想更好地了解:在对象上调用的函数和通过对象调用的函数之间有什么区别?

如果函数被分配给一个对象的属性,它被称为该对象的一种方法。当在一个对象上或通过一个对象调用一个函数时,该对象就是调用 上下文或该函数的这个值。

我想了解什么是对对象的功能之间的区别调用和功能通过对象调用

+1

这意味着同样的事情。 – dandavis

+0

希望这个链接将提供很好的解释[链接](https://www.w3schools.com/js/js_function_invocation.asp) – Thennarasan

+1

@Thennarasan - 它没有描述这个问题所提出的问题(W3Schools是一般来说很糟糕) – Quentin

回答

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); 
+0

我会在这里使用“on”和“through”。 – Bergi

+0

是的,我可以看到,现在你已经说过了。 – fubar

+0

@Bergi我同意你的解决方法更有意义,我相应地更新了我的答案。 – fubar

相关问题