在transit.js中理解一个简单的回报

时间:2015-06-15 08:39:40

标签: javascript jquery

我对js相对比较新,基本上我在transit.js中遇到了以下函数,这是一个小动画库。看看下面的功能:

function Transform(str) {
    if (typeof str === 'string') { this.parse(str); }
    return this;
  }

现在this.parse(str),基本上是调用附加到Transform原型的功能,您可以在 LINE 422 上看到该功能。

现在我的问题是关于this,我在线阅读了一些文章,其中显示了如何将这个文章用于链接,但我不确定在这个例子中返回的是什么。

当你在这个特定场景中说return this时,你具体指的是什么?到底是什么。

我有点明白,返回这个工作有点像:

  • 将对象,变量或其他内容传递给函数
  • 该函数执行步骤
  • 使用return this返回新对象或变量。

但是我仍然不清楚,有人可以通过我的例子并使用示例上下文来解释这一点吗?

P.S。我不是要求解释返回这个,但我要求在给定的上下文中解释返回。

2 个答案:

答案 0 :(得分:3)

this.parse(str)最有可能改变对象并返回现在变异的结果。像你说的那样,chaining function calls就像这样有用:

var obj = Transform('some string').someOtherFunction();

someOtherFunc可以在prototype chain中的某个位置定义,或者使用某种inheritance strategy,它可能是另一个" parent"的继承或扩展功能。宾语。关键是当调用someOtherFunc时,会在Transform函数已经改变的对象上调用它。

答案 1 :(得分:2)

在该上下文中的转换是可以实例化的对象。实例化后,它具有自己的属性和自己的生命周期。这就是声明在声明期间使用单词function不清楚的地方。 (ES6相对于此用法带来了许多更好的解决方案)。

var transform1 = new Transform("transform1");
var transform2 = new Transform("transform2");

现在可以单独使用transform1和transform2来调用Transform对象的所有子方法。

转换函数可以看作是"构造函数" (虽然它不是在javascript中使用类的官方方式)。如果没有return this,则transform1和transform2将是未定义的。这里更多地使用它来保持新创建的对象的引用而不是真正的链接,使用的更多是子方法来执行以下操作:

transform1.submethod1().submethod2();