我对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。我不是要求解释返回这个,但我要求在给定的上下文中解释返回。
答案 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();