首页 > 编程语言 > 详细

理解javascript原型的动态性

时间:2015-08-28 13:42:36      阅读:259      评论:0      收藏:0      [点我收藏+]
function Person(){}
Person.prototype.name = ‘sun‘;

var person1 = new Person();
alert("Person最初原型:"+person1.name);

//第一次重写原型
Person.prototype = {
	constructor : Person,   //显式声明constructor
	name : ‘cheng‘,
	age : 18
};

alert("原型被覆盖后P1:"+person1.name);   //sun
//新实例
var person2 = new Person();
alert("原型覆盖后P2:"+person2.name);   //cheng

alert("最初  :"+ person1.constructor);   //指向Person
alert("覆盖后:"+ person2.constructor);   //指向Person

//第二次覆盖原型
Person.prototype = {
	constructor : Person,
	name : ‘ffff‘,
	age : 18
};

alert("原型覆盖后P1:"+person1.name);   //sun
alert("原型覆盖后p2:"+person2.name);   //cheng
var person3 = new Person();
alert("原型覆盖后p3:"+person3.name);   //fff

以上测试可以看出:

1:原型重写前创建的对象实例,始终指向重写前的prototype

2:原型重写后创建的对象实例,始终指向最新重写的prototype;

3:多个被重写的原型可以同时存在,并且都可以通过constructor与函数对象关联。?

总结 ,对象实例中的[[prototype]]指针,始终指向对象实例被创建前最新出现的函数原型,永不改变;

            多个原型可以同时存在,并于函数对象关联;(需要显式声明constructor)


理解javascript原型的动态性

原文:http://my.oschina.net/dlam/blog/498567

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!