我想知道,在 javascript 函数中“返回这个”是做什么的,它的目的是什么?假设我们有以下代码:
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
“返回这个”在函数内部有什么作用?
我知道上面的代码做了什么,以及“this”关键字的用途。我只是不知道“返回这个”在函数内部做了什么。
我想知道,在 javascript 函数中“返回这个”是做什么的,它的目的是什么?假设我们有以下代码:
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
“返回这个”在函数内部有什么作用?
我知道上面的代码做了什么,以及“this”关键字的用途。我只是不知道“返回这个”在函数内部做了什么。
它指的是当前正在调用该方法的对象实例。它用于链接。例如,您可以执行以下操作:
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();
这意味着该方法将返回它所属的对象。如果您想像这样链接指令,这会很有用:
MyObject.method1().method2().method3();
现实世界的例子:jQuery
$(this).addClass('myClass').hide();
tl;drthis
从方法返回是允许将方法“链接”在一起的常用方法。
this
指的是当前上下文,并根据您调用函数的方式改变含义。
使用函数调用,
this
指的是全局对象,即使函数是从一个方法调用的,并且该函数与调用它的方法属于同一类。Douglas Crockford 将其描述为“语言设计中的错误”[Crockford 28]使用方法调用,
this
指的是调用方法的对象。使用 apply 调用,
this
指的是您在调用 apply 时设置的任何内容。使用构造函数调用,
this
指的是在幕后为您创建的对象,该对象在构造函数退出时返回(前提是您没有错误地从构造函数返回您自己的对象)。
在上面的示例中,您正在创建一个名为的新方法method
,该方法允许您动态添加函数并返回this
,从而允许链接。
所以你可以这样做:
Car.method("vroom", function(){ alert("vroom"); })
.method("errrk", function() { alert("errrk"); });
等等。
它返回 this,通常表示调用它的 html 元素,但“this”可以有多种含义 http://www.quirksmode.org/js/this.html