javascript中的原型理解

对于javascript中的原型的理解,今天又复习了一下:

我们先看看《javascript高级程序程序设计3》对原型的讲解

先看示例:

function Person(){}
Person.prototype.name="Nicholas";
Person.prototype.age=29;
Person.prototype.sayName=function(){
  alert(this.name);
}
var person1 = new Person();
person1.sayName();
var person2 = new Person();
person2.sayName();

书中写到:
只要创建一个新的函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向了函数的原型对象,在默认的情况下所有原型都会自动获得一个constructor属性,这个属性包含一个指向prototype属性所在函数的指针。Person.prototype.constructor指向Person这个构造函数。
创建自定义的构造函数后,其原型对象默认只会获取constructor属性,其他属性都是从Object继承下来的,当调用构造函数创建一个新的实例后,该实例内部包含一个指针(内部属性),指向函数的原型对象,ECMA-262第5版中叫这个指针为[[Prototype]],在脚本中没有标志的访问方式,但是在Firefox,safari,Chrome中都支持一个属性__proto__

下面是书中对Person()构造函数和Perons.prototype,实例之间的关系图:



下面两张图是我自己对原型的理解:



有了这些图片,应该对javascript的原型有了更好的理解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值