我想知道,在javascript函数中“返回这个”是做什么的,它的目的是什么? 假设我们有以下代码:
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
在函数内部“返回此”做什么?
我知道上面的代码是什么,以及“this”关键字的用途是什么。我只是不知道函数内部的“返回这个”是什么。
答案 0 :(得分:53)
它指的是当前正在调用该方法的对象实例。它用于链接。例如,你可以这样做:
myObject.foo().bar();
由于foo
返回this
(对myObject
的引用),因此也会在对象上调用bar
。这和做
myObject.foo();
myObject.bar();
但需要更少打字。
这是一个更完整的例子:
function AnimalSounds() {}
AnimalSounds.prototype.cow = function() {
alert("moo");
return this;
}
AnimalSounds.prototype.pig = function() {
alert("oink");
return this;
}
AnimalSounds.prototype.dog = function() {
alert("woof");
return this;
}
var sounds = new AnimalSounds();
sounds.cow();
sounds.pig();
sounds.dog();
sounds.cow().pig().dog();
答案 1 :(得分:12)
这意味着该方法将返回它所属的对象。如果您想链接如下链接,这可能很有用:
MyObject.method1().method2().method3();
真实世界的例子:jQuery
$(this).addClass('myClass').hide();
答案 2 :(得分:11)
tl; dr 从方法返回this
是允许将方法“链接”在一起的常用方法。
this
引用当前上下文,并根据您调用函数的方式更改含义。
使用函数调用,
this
引用全局对象,即使从方法调用该函数,该函数也与调用它的方法属于同一个类。 Douglas Crockford将此描述为“语言设计中的错误”[Crockford 28]使用方法调用,
this
引用其上的对象 正在调用方法。通过应用调用,
this
指的是在调用apply时设置的内容。使用构造函数调用时,
this
引用的对象是 在幕后为你创建,当它返回时 构造函数退出(假设您没有错误地从构造函数中返回自己的对象)。
在上面的示例中,您将创建一个名为method
的新方法,该方法允许您动态添加函数,并返回this
,从而允许链接。
所以你可以这样做:
Car.method("vroom", function(){ alert("vroom"); })
.method("errrk", function() { alert("errrk"); });
等等。
答案 3 :(得分:2)
它返回这个,通常意味着调用它的html元素,但“this”可以有不同的含义 http://www.quirksmode.org/js/this.html