美文网首页
javascript 使用Object.create实现类式继承

javascript 使用Object.create实现类式继承

作者: 雨中追燕 | 来源:发表于2016-11-15 16:52 被阅读137次

    Object.create()方法创建一个拥有指定原型和若干个指定属性的对象。

    什么是prototype:

    每个函数都有一个prototype属性,这个属性是指向一个对象的引用,这个对象称为原型对象,原型对象包含函数实例共享的方法和属性,也就是说将函数用作构造函数调用(使用new操作符调用)的时候,新创建的对象会从原型对象上继承属性和方法。

    什么是apply和call

    在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向。JavaScript 的一大特点是,函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念。

    对于 apply、call 二者而言,作用完全一样,只是接受参数的方式不太一样。

    apply 、 call 、bind 三者都是用来改变函数的this对象的指向的;

    apply 、 call 、bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文;

    apply 、 call 、bind 三者都可以利用后续参数传参;

    bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。

    例子:

    function person(name){

      this.name=name;

      this.className="person"

    }

    person.prototype.getName=function(){

       console.log(this.name)

    }

    function man(name){

       person.apply(this,arguments)

    }

    man.prototype = Object.create(person.prototype);

    var man1=new man("Davin");

    console.log(man1.name);      //Davin

    console.log(man1.getName());     //Davin

      //constructor 属性返回对创建此对象的数组函数的引用。

    console.log(person.prototype.constructor); //function person(name){... }

    console.log(man.prototype.constructor); //function person(name){... }

    相关文章

      网友评论

          本文标题:javascript 使用Object.create实现类式继承

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