2

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

对不起,我不知道它叫什么,但是当你选择一些东西而不是向它添加类时,我不知道它叫什么,而且你可以同时做其他事情!

例如:

list.getAll().count()

或者

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

我尝试了很多方法,但不幸的是,除非我扩展我不想要的函数类,否则我无法让它工作!

4

2 回答 2

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包含列表中所有项目的新对象并将其返回。)

于 2012-10-21T09:37:33.147 回答
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在本例中)。

于 2012-10-21T09:39:13.750 回答