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){... }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 6,428评论 1 10
  • 1. this2.原型链-instanceof实现3.继承的实现 ** this 相关问题 ** ** 1、 ap...
    饥人谷_阿靖阅读 2,790评论 0 0
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,385评论 2 17
  • 1: apply、call 、bind有什么作用,什么区别 call 和 apply 都是为了改变某个函数运行时的...
    高进哥哥阅读 1,891评论 0 0
  • title: js面向对象date: 2017年8月17日 18:58:05updated: 2017年8月27日...
    lu900618阅读 3,666评论 0 2