我有一个我用这个剪辑创建的对象,它看起来像这样:
...
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');
有人可以告诉我如何解决这个问题,甚至可以在链接这样的方法时调用它吗?
答案 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
执行相同操作。