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

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实现类式继承)