我已经在jQuery编写了一段时间了,有一件事真的让我对jQuery感到困惑的是它能够链接方法的方式,我只是决定制作我自己的一系列可链接方法,当然是纯粹的js好吧,它没有做任何有用的事情,看看:
var me = {};
function add() {
this.color = 'red';
return this;
}
function value() {
this.value = 50;
return this;
}
var s = add.call(me);
console.log(me);
我想要实现的是语法,就像这样,
me.add().value(); // value should be Object { color: "red" , value : 50 }
那么,我如何实现这种语法?
截至目前,我必须使用call()
强制更改函数add()
和value()
的上下文,有人可以告诉我吗?
THIS 这篇文章帮助我理解它对return this
很重要,但我仍然无法理解我如何在我的场景中使用链接现在。
任何帮助和建议都将受到高度赞赏。
编辑 ::这可能听起来很疯狂,但我已经知道如下语法:
var obj =
{
f1: function() { ...do something...; return this;},
f2: function() { ...do something...; return this;}
}
如果你观察上面的代码,这确实会指向主要对象(obj),但如果我有一个obj2怎么办?现在必须使用call()
或apply()
?这不是我想要的,因此我希望函数不是对象内部的闭包,而是独立的函数,可以在任何对象上调用,如下所示:
me.add().value(); // value should be Object { color: "red" , value : 50 }
这可能吗?
谢谢。