方法体的链式操作

Posted zxd66666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了方法体的链式操作相关的知识,希望对你有一定的参考价值。

前言

  JQ的链式操作大家玩的都很熟悉了,但是底层是如何进行这般骚操作的?

  之前我曾经想过在方法体把this返回出去,这样就可以方法().方法()这样执行下去,可以执行里面的业务逻辑,但是问题在于,我们要处理的值,怎么传给下一个方法?

 

案例

Object.prototype.toUpper = function(){
  return  this.substr(0,1).toLocaleUpperCase() + this.substr(1);
}

Object.prototype.toLower = function(){
  return this.substr(0,1).toLocaleLowerCase() + this.substr(1).toLocaleUpperCase();
}

Object.prototype.addStr = function(){
  return this + ‘真帅‘;
}

var str = ‘zxd‘;
console.log(str.toUpper().toLower().addStr());//zXD真帅

 

思路

  和java一样,所有元素都继承了Object,那么我们只要在Object的原型对象中添加方法,就相当于给其他元素都添加了这个方法体(如果不想就自己创建一个类,然后把属性方法写里面,也是一样的,但更安全),此时我们就无需return this,其他方法体也能调用this就指向了调用它的方法体并获取这个值,然后把值一层层返回出去即可。

以上是关于方法体的链式操作的主要内容,如果未能解决你的问题,请参考以下文章

PHP链式操作通过call和callstatic魔术方法的实现,以及phpstorm通过注释去追踪function

两万字硬核解析树与二叉树所有基本操作(包含堆,链式二叉树基本操作及测试代码,和递归函数的书写方法)

tp5数据库——链式操作

链式队列的实现

PHP实现链式操作的三种方法详解

链式编程思想