// Q returns new Library object
var Q = function (params) {
return new Library(params);
};
// In our Library we get our selector with querySelectorAll (we do not support < ie8)
// We also add selector length, version and twitter/github or whatever you like as information about your library.
var Library = function (params) {
// Get params
var selector = document.querySelectorAll(params),
i = 0;
// Get selector length
this.length = selector.length;
this.version = '0.1.0';
this.twitter = 'http://www.twitter.com/mmmmm_';
// Add selector to object for method chaining
for (; i < this.length; i++) {
this[i] = selector[i];
}
// Return as object
return this;
};
为什么我们在构造函数的末尾有return this;
?如果我们省略它会怎么样?
这不是我第一次在构造函数中找到此指令,但有时会出现,有时(在其他类别的其他脚本中)它不会出现,我不明白其中的原因。
答案 0 :(得分:4)
假设使用new Ctor()
语法调用构造函数,如果您编写return this
则没有区别。如果构造函数到达末尾而没有返回任何内容,则隐式返回this
。
如果在不使用new
的情况下将构造函数作为常规函数调用,那么它将像往常一样运行:在没有返回return语句的情况下到达末尾的函数返回undefined
和{{1} }语句将取决于传入的return this
的值(它将取决于您如何调用该函数)。
答案 1 :(得分:1)
它返回当前对象实例,允许您进行方法链接(例如object.method1().method2().method3();
)
答案 2 :(得分:0)
它就在那里你可以在同一个对象上链接多个函数。 jQuery无处不在。