我正在尝试实现链式方法,但我无法做到。
function Person(name){
this.name = name;
};
Person.prototype.walk = function walk(callback) {
//callback()
};
var person = new Person();
person.walk().walk().walk().walk();
答案 0 :(得分:1)
在你的小提琴中,你的运行时异常是由PersonApi中的函数引起的,而不是返回PersonApi对象本身,而是它包含的Person对象。
在第一次调用walk()时,这很好,因为walk()将返回一个具有方法'jump'的person对象。但是,person对象的'jump'函数返回undefined,这就是链中的下一个调用将产生错误的原因。更改API函数的所有以返回'this'而不是'this.person':
PersonApi.prototype.jump = function(){
this.person.jump();
return this;
};
这应该产生预期的结果。
答案 1 :(得分:0)
person.walk().jump().run().kneelDown();
当且仅当,才能链接person.walk() 返回一个对象/函数,其中包含jump()函数。 类似地,person.walk()。jump()只有在它内部返回run()对象时才能被链接,依此类推。
否则,按照@Satchmo Sanders
的建议,上述方法是正确的答案 2 :(得分:-1)
您必须单独调用这些函数:
var person = new PersonApi();
function doAll() {
//put this function wherever and name it whatever
person.walk()
person.jump()
person.run()
person.kneelDown();
}
doAll();
我希望这就是你想要的。