使用链接将值附加到空对象,而不使用call()

时间:2015-07-23 11:11:07

标签: javascript

我已经在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 }

这可能吗?

谢谢。

0 个答案:

没有答案