美文网首页
JS查漏补缺

JS查漏补缺

作者: 郑无穷大 | 来源:发表于2018-08-21 17:14 被阅读0次

    1、继承

    继承可以使得子类具有父类别的各种属性和方法,而不需要再次编写相同的代码。

    __proto__和prototype的联系与区别

    __proto__是JavaScript中对象实例所拥有的一个属性,它指向的是该对象实例所对应的prototype对象。(需要注意的是,如上所述,Object.prototype是所有对象继承的顶点,而它的__proto__的值为null) 

    __proto__与prototype的区别则在于,__proto__是对象固有的属性,它指向的是该对象实例的构造函数的prototype(Object.prototype除外),而prototype是函数固有的属性,其值是一个函数的原型对象。对象的__proto__指向构造函数的prototype。

    只有构造函数才有prototype,prototype只有一个功能就是用来存放共有属性对象的地址。

    ES5 实现继承的方式就是加原型链:

    其中Man.prototype.__proto__ = Human.prototype  IE不支持,因为IE不允许控制__proto__。

    等价于:

    var f = function(){}

    f.prototype = Human.prototype

    Man.prototype = new f()

    原理:New 会间接强行让其相等;

    具体为:

    var obj = new Fn ()

    (1)产生一个空对象;(2)this = 空对象;

    (3)this.__proto__ = Fn.prototype

    (4)执行Fn.call(this,arguments...)

    (5)return (4)的结果

    如果直接Man.prototype = new Human(),但是new会让第四部分执行的结果绑定到this.__proto__上,因此

    var f = function(){}

    f.prototype = Human.prototype

    是必要的,将Human这个构造函数内的proto清空。

    改原型链是十分损耗性能的。

    ES6 写法



    2、mixin、柯里化等常见术语

    mixin 混入   

    mixin等同于Object.assign(a,b)的作用;

    curry 柯里化

    将一个函数的多个自变量或者多个函数,其中的部分自变量或者部分函数固定,得到新的偏函数,这个过程叫作柯里化。


    HOC 高阶函数



    3、同步、异步

    同步,在主线程依次执行 异步,执行完主线程后再调用,思考一下event loop

    4、事件委托、事件冒泡


    点击li将其内input的value显示在h1标签 也可用Array.from(items)变成数组 添加点击事件添加元素并点击元素依旧显示在页面中;事件委托,坚挺动态生成li的父元素ul,添加点击事件,再执行子类; 阻止事件冒泡

    相关文章

      网友评论

          本文标题:JS查漏补缺

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