关于链式编程最典型的就是jQuery(虽然我们现在已经很少直接使用jQuery),我们可以通过jQuery完成一系列的链式操作,使编程的流程更加清晰。所谓的链式编程就是可以通过"点"语法,将需要执行的代码块连续的书写下去,使得代码简单易读,书写方便。ES6中的Promise也是使用了这个思想。
先来看一个例子
// 创建构造函数
function Person() { }
// 添加方法 setName
Person.prototype.setName = function (name) {
this.name = name;
return this
}
// 添加方法 setAge
Person.prototype.setAge = function (age) {
this.age = age;
return this
}
// 添加方法 speak
Person.prototype.speak = function () {
console.log(this.name, this.age)
}
// 添加方法 getName
Person.prototype.getName = function (name) {
return this.name
}
var per = new Person();
per.setName('cuiht').setAge('25').speak(); //打印 cuiht 25
console.log(per.getName());
大家也可以看出来,javascript的链式编程的核心就是return this;
,在函数的最后加上这一句代码,我们就可以执行链式操作了。同时这里也暴露出来它的一个弱点在,某些方法里因为有值需要返回,不能返回this
,就不能继续执行链式操作。
优点
1.代码变得简洁,优雅。2.链式操作实际上就是使得编程的流程更加清晰,不会像回调函数一样相互耦合,难以分辨函数的执行顺序且维护困难。
缺点
1.如同上面所说,javascript的链式编程的一个弱点,只能应用在不需要返回值的情况下或者只能最后一步需要返回值。2.过长的链式,会容易造成操作不明确,难以维护,不利于理解。
上有天,下有地,中间站着你自己,做一天人,尽一天人事儿。
网友评论