在 javascript 函数中“返回这个”有什么作用?

IT技术 javascript
2021-01-28 17:02:46

我想知道,在 javascript 函数中“返回这个”是做什么的,它的目的是什么?假设我们有以下代码:

Function.prototype.method = function (name, func) {
  this.prototype[name] = func;
  return this;
};

“返回这个”在函数内部有什么作用?

我知道上面的代码做了什么,以及“this”关键字的用途。我只是不知道“返回这个”在函数内部做了什么。

4个回答

它指的是当前正在调用该方法的对象实例。它用于链接。例如,您可以执行以下操作:

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();

http://jsfiddle.net/jUfdr/

为什么不使用实际代码来说明,因为扩展prototype它的作用是什么?AnimalSounds.method( 'cow', func... ).method( 'pig', func... ).method( 'dog', func... );
2021-03-23 17:02:46

这意味着该方法将返回它所属的对象。如果您想像这样链接指令,这会很有用:

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