美文网首页
JS实现JQuery中的链式操作

JS实现JQuery中的链式操作

作者: HalShaw | 来源:发表于2019-07-15 22:41 被阅读0次
JQuery
  • 前不久面试某大厂被问到关于JQuery中的链式操作的问题,才疏学浅的我一脸懵逼,这东西只是用过,怎么还要求自己动手实现呢,究其原因还是自己修为不够,达不到大厂的水平,平时‘拿来主义‘习惯了,也不会去深究其底层原理,可见学习思维与方式还需改进,今天就来好好学习一番。
  • 网上查了一下,其原理其实很简单,就是在每次方法执行完后返回this对象,然后后面的方法就可以继续在this环境下执行。
  • 然后自己动手实现一下:
function Employee(){};
// 在原型上定义对应的方法
Employee.prototype ={
  setName:function(name){
    this.name = name;
    return this;
  },
  setAge:function(age){
    this.age = age;
    return this;
  },
  setSex:function(sex){
    this.sex = sex;
    return this;
  }
}

var employee= new Employee();
employee.setName("Hal").setAge(24).setSex("male");
// Employee {name: "Hal", age: 24, sex: "male"}
  • 因为每次返回的结果都是this,所以 '.' 后面的方法就相当于每次都在调用this,如下:
employee.setName("Hal") === employee.setName("Hal").setAge(24) // true
employee.setName("Hal") === employee.setName("Hal").setAge(24).setSex("male") // true
  • 优点
    链式操作使得异步编程的流程更加清晰,不会像回调函数一样相互耦合,难以分辨函数的执行顺序且维护困难,实现了水平扩展。在ES6中,Promise也正是沿用了这一思想,每一个异步任务返回一个Promise对象,通过then方法指定回调函数。

  • 缺点
    只能应用在不需要返回值的情况下,或者说只能最后一步才能设置返回值,因为要支持链式调用返回的只能是this,但jQuery主要是对DOM元素进行操作,只需要改变DOM元素的表现而不需要返回值,所以适合链式操作。

  • 参考
    https://www.cnblogs.com/youhong/p/6899466.html

相关文章

  • JS实现JQuery中的链式操作

    前不久面试某大厂被问到关于JQuery中的链式操作的问题,才疏学浅的我一脸懵逼,这东西只是用过,怎么还要求自己动手...

  • jquery的链式操作,和underscope的链式操作

    先说说jquery的链式操作。 jquey的链式操作比较简单,我们只要把jquery对象返回就可以实现链式调用。 ...

  • 自制jquery-第一篇

    1, jquery.js脚本文件 2,实现链式调用的原理 非链式调用:$xxx.addClass("active"...

  • jQuery学习

    1.jQuery获取元素 : $(选择器) 代码实现: 2.jQuery链式操作 分解开来就是 代码实现: 3.j...

  • Velocity.js使用总结

    Velocity.js(独立于jQuery的,但两者可以结合使用[利用jQuery的链式操作])1.可以使用ani...

  • js链式调用

    关键词:链式调用 我们都很熟悉jQuery了,只能jQuery中一种非常牛逼的写法叫链式操作 那这是如何实现的呢,...

  • Jquery

    Jquery的 总体思想:用最少的代码实现更多的事件 为什么使用jQuery js选择器功能弱 js中DOM操作繁...

  • JQuery链式调用的实现

    JQuery链式调用的实现

  • JavaScript 中的链式调用

    最近在看 jQuery 的源码,正好看到异步队列 Deferred 的实现,联想到链式调用的实现。 实现 在 JS...

  • 1.2jquery总结

    1.jquery总结 jquery链式操作jquery函数内的this指原生对象

网友评论

      本文标题:JS实现JQuery中的链式操作

      本文链接:https://www.haomeiwen.com/subject/jrmokctx.html