如何创建可以链接在一起的功能?

时间:2012-10-21 09:34:44

标签: javascript

如何在JavaScript中创建一个函数列表,像这样一起执行操作?

对不起,我不知道它叫什么,但是当你选择的东西比你添加类的时候更像Jquery,而且你可以在同一时间做其他事情!

例如:

list.getAll().count()

或者

list.getAll().removeLast().dosomthingElse().count()

我尝试了很多方法,但不幸的是,除非我扩展不是我想要的功能类,否则我无法使其工作!

2 个答案:

答案 0 :(得分:5)

这就是所谓的链接方法。您只需从方法中返回对象引用(this):

List.prototype.getAll = function() {
  // do something
  return this;
}

或者,如果方法产生新结果,则创建相同类型的对象并返回:

List.prototype.removeLast = function() {
  var items = this.items.slice(0, items.length - 1);
  return new List(items);
}

(您还可以创建不同类型的对象。例如,toCollection方法可以创建一个新的Collection对象,其中包含列表中的所有项目并返回该对象。)

答案 1 :(得分:2)

您需要定义一个方法。这是附加到对象的函数。

您可以这样定义:

window.myMethod = function(){
    alert(this) ;
}

对象不一定是window。要将另一个方法链接到最后,请使用return this

window.myMethod = function(){
    alert(this) ;
    return this ;
}

window.myOtherMethod = function(){
    console.log(this) ;
    return this ;
}

window.myMethod().myOtherMethod() ;

现在您可以使用一系列方法,因为第二种方法从第一种方法接收原始对象(在此示例中为window)。

相关问题