在Javascript中堆叠方法

时间:2011-09-25 22:19:07

标签: javascript

我有一个我用这个剪辑创建的对象,它看起来像这样:

  ...
  var steps = new Array();
  this.createStep = function(){steps.push(new step()); return steps[steps.length-1];}; 
  this.getSteps = function(){return steps;}; //returns Array
  this.removeStep = function(pos){steps.splice(parseInt(pos), 1);}; // integer possition zero base
  this.insertStep = function(pos){steps.splice(parseInt(pos),0, new step());};

这很好用:

...
var newStep = wfObj.createStep();
newStep.setTitle('Step-'+i);
newStep.setStatus('New');

但这不是

var newStep = wfObj.createStep().setTitle('Step-'+i).setStatus('New');

有人可以告诉我如何解决这个问题,甚至可以在链接这样的方法时调用它吗?

2 个答案:

答案 0 :(得分:6)

这称为流畅的界面。使其工作的方法是让每个函数都返回this

答案 1 :(得分:4)

作为Ned said,有时称为fluent interface。正如你所听到的那样,它有时也称为method chaining

您可能在某处看起来像这样的代码:

this.setTitle = function(newTitle) {
    title = newTitle;
};

将其更改为:

this.setTitle = function(newTitle) {
    title = newTitle;
    return this;
};

setStatus执行相同操作。