什么是;把这个退回来;在javascript函数中执行什么操作?
我想知道,“returnthis”在javascript函数中做什么,它的用途是什么? 假设我们有以下代码:什么是;把这个退回来;在javascript函数中执行什么操作?,javascript,Javascript,我想知道,“returnthis”在javascript函数中做什么,它的用途是什么? 假设我们有以下代码: Function.prototype.method = function (name, func) { this.prototype[name] = func; return this; }; “returnthis”在函数内部做什么 我知道上面的代码是做什么的,以及“this”关键字的用法。我只是不知道“returnthis”在函数内部做什么;dr从方法返回此是允许将方法“链
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
“returnthis”在函数内部做什么
我知道上面的代码是做什么的,以及“this”关键字的用法。我只是不知道“returnthis”在函数内部做什么;dr从方法返回
此
是允许将方法“链接”在一起的常见方法
此
引用当前上下文,并根据调用函数的方式更改含义
对于函数调用,此
引用全局对象,即使函数是从方法调用的,并且函数与调用它的方法属于同一类。道格拉斯·克罗克福德(Douglas Crockford)将此描述为“语言设计中的错误”[Crockford 28]
对于方法调用,此
引用
方法正在被调用
使用apply调用时,此
引用调用apply时将其设置为的任何值
通过构造函数调用,此
引用
在幕后为您创建,当
构造函数退出(前提是您不会错误地从构造函数返回自己的对象)
在上面的示例中,您正在创建一个名为method
的新方法,该方法允许您动态添加函数,并返回this
,从而允许链接
所以你可以这样做:
Car.method("vroom", function(){ alert("vroom"); })
.method("errrk", function() { alert("errrk"); });
依此类推。它指的是当前正在调用该方法的对象实例。它是用来锁链的。例如,您可以这样做:
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();
它返回this,通常指调用它的html元素,但“this”可以有多种含义
这意味着该方法将返回它所属的对象。如果您希望像这样链接指令,这可能很有用:
MyObject.method1().method2().method3();
现实世界的例子:jQuery
$(this).addClass('myClass').hide();
@user722756:因为
方法
被添加到函数。原型
,此
将引用调用方法
的函数。该函数可能被用作“构造函数”,因为method
正在扩展函数的prototype
对象。我知道“this”关键字的用法,但我不知道“returnthis”在函数内部的用法。returnthis
用于创建。请看下面由@marcioAlmada和@AdamRackis发布的答案。我猜你不明白我的问题。我知道上面的代码是做什么的,只是不知道“returnthis”是做什么的。既然扩展了原型
,为什么不使用实际的代码来说明可能的重复呢<代码>动物声音。方法('cow',func…)。方法('pig',func…)。方法('dog',func…)代码>