我对js比较陌生,基本上在transit.js中看到了以下函数,这是一个小型动画库。请看下面的功能:
function Transform(str) {
if (typeof str === 'string') { this.parse(str); }
return this;
}现在this.parse(str),基本上是调用一个附加到Transform原型的函数,您可以在第422行上看到这个函数。
现在我的问题是关于this的,我在网上读了几篇文章,这些文章展示了如何将它用于链接,但是在这个例子中,我不太确定返回的是什么。
当您在这个特定场景中说return this时,您具体指的是什么?到底是什么。
我有点理解这种工作方式是这样的:
return this返回新对象或变量。但我还是不太清楚,有人能不能用我的例子,用例子的上下文来解释清楚呢?
我不是要求解释返回,而是要求在给定的上下文中解释返回。
发布于 2015-06-15 08:46:12
this.parse(str)很可能会变异对象并返回现在发生变异的结果。就像您说的,这对于像这样的链接函数调用是有用的:
var obj = Transform('some string').someOtherFunction();someOtherFunc可以在原型链中的某个地方定义,或者通过使用某种继承策略,它可能是另一个“父”对象的继承函数或扩展函数。要点是,当调用someOtherFunc时,对已经被Transform函数更改的对象调用它。
发布于 2015-06-15 09:14:25
在该上下文中的转换是一个可以实例化的对象。一旦实例化,它就有自己的属性和生命周期。这就是javascript在声明过程中使用单词function不清楚的地方。(ES6带来了许多与这种使用相关的更好的解决方案)。
var transform1 = new Transform("transform1");
var transform2 = new Transform("transform2");现在可以单独使用transform1和transform2来调用Transform对象的所有子方法。
Transform函数可以看作是一个“构造函数”(尽管它不是javascript中使用类的正式方法)。如果没有return this,transform1和transform2将是未知的。在这里,它更多地用于保存新创建的对象的引用,而不是真正的链接,而真正的链接更多地用于执行以下操作的子方法:
transform1.submethod1().submethod2();https://stackoverflow.com/questions/30840755
复制相似问题