我认为我在方法链接方面缺少一些东西。对我来说感觉不完整。
方法链接的工作原理是让每个方法返回this,以便可以调用该对象上的另一个方法。但是,返回值是this函数的结果而不是函数的结果这一事实对我来说似乎很不方便。
这是一个简单的例子。
const Obj = {
result: 0,
addNumber: function (a, b) {
this.result = a + b;
return this;
},
multiplyNumber: function (a) {
this.result = this.result * a;
return this;
},
}
const operation = Obj.addNumber(10, 20).multiplyNumber(10).result
console.log(operation)
关键点:
- 链中的每个方法都
Obj.addNumber(10, 20).multiplyNumber(10)返回this. - 链的最后一部分
.result是返回除 之外的值的部分this。
这种方法的问题在于,它要求您附加一个属性/方法才能在末尾获得一个值,而不是this.
将此与 JavaScript 中的内置函数进行比较。
const str = " SomE RandoM StRIng "
console.log(str.toUpperCase()) // " SOME RANDOM STRING "
console.log(str.toUpperCase().trim()) // "SOME RANDOM STRING"
console.log(str.toUpperCase().trim().length) // 18
关键点:
- 链中的每个函数都不会返回函数的结果
this(也许这是在幕后完成的) - 在链的末尾不需要任何属性/方法来获得结果。
我们可以实现方法链来表现 Javascript 中内置函数的行为方式吗?