四,前端---constructor与prototype

  这里对于constructor 和 prototype做一个简单的介绍,旨在让大家有一个简单的了解与认识

1:定义与用法

  prototype:属性使您有能力向对象添加属性和方法。

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

2:语法

  object.prototype.name = value

  object.constructor

  在JavaScript语言中,constructor属性是专门为function而设计的,它存在于每一个function的prototype属性中。这个construtor保存了指向function的一个引用。

  JavaScript内部会执行如下几个动作:

  1:为该函数添加一个原型属性(即prototype对象)

  2:为prototype对象额外添加一个constructor属性,并且该属性保存指向函数的一个引用。

  这样当我们把函数F作为自定义构造函数来创建对象的时候,对象实例内部会自动保存一个指向其构造函数的prototype对象的一个属性__proto__,所以我们在每一个对象实例中就可以访问构造函数的prototype所拥有的全部属性和方法。

  当然该实例也有一个constructor属性了(从prototype那里获取到),这时候constructor作用就很明显了,因为这时每一个对象实例都可以通过constructor对象访问它的构造函数。

  即可以用代码表示:

    使用构造函数来声明一个对象 var f = new F();,可以得到如下判断

      f.constructor === F; // true

      f.constructor === F.prototype.constructor; // true

  3:其实constructor的出现原本就是用来进行对象类型的判断的,但是constructor属性易变,不可信赖。有一种更加安全的判定方法:instanceof 操作符。原型链继承,由于constructor存在于prototype对象上,因此我们可以结合constructor沿着原型链找到最原始的构造函数,如下面的代码:

  function Person (name){

    this.name = name;

    this.showMe = function(){

      alert(this.name);

    }

  };

  var one = new Person('<a href="#" class='replace_word' title="JavaScript知识库" target='_blank'>JavaScript</a>')

  one.showMe(); //<a href="#" class='replace_word' title="JavaScript知识库" target='_blank'>javascript</a>

  4:原型链

  每个对象都会在其内部初始化一个属性,就是__proto__,当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去__proto__里找这个属性,这个__proto__又会有自己的__proto__,于是就会这样一直下去,形成一个链,就是原型链。

转载于:https://www.cnblogs.com/lwljishini/p/7143119.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值