JavaScript的原型链学习研究

来源:互联网 发布:淘宝卖家如何发布微淘 编辑:程序博客网 时间:2024/05/19 16:21
今天在CSDN上看到这么一段代码,感觉有需要学习的东西,在此总给一下。

分析一下:

创建了一个fun类,写了name和age属性。然后new 一个实体a和b,打印a和b的name属性,断开原型链之后,修改属性值无效,即变成引用。

代码如下:

/** * Created by simon.zhang on 2016/7/26. */var fun=function () {};fun.prototype={  name:"peter",  age:25};var a=new fun();//new  avar b=new fun();//new  bconsole.log(a.name,b.name);//peter peterfun.prototype.name="simon";console.log(a.name,b.name);//simon simon//----------------fun.prototype={};//原型链断开,所有的实例,马上会变成引用(即修改原型的属性值,其值不会改变)console.log(a.name,b.name);//simon simon,a和b引用的还是原来的对象fun.prototype.name="mary";//重建原型链var d=new fun();console.log(d.name);//mary,打印新的nameconsole.log(a.name,b.name);//simon simon,a和b引用的还是原来的对象fun.constructor.prototype.name="jack";//并不能修改原型的属性值console.log(d.name);//maryconsole.log(a.name,b.name);//simon simon,a和b引用的还是原来的对象//----------------fun.prototype.name="mary";fun.prototype.age="24";var c=new fun();console.log(c.name,c.age);//mary 24

JavaScript的面向对象Demo代码

/** * Created by simon.zhang on 2016/7/26. */var Person=function () {};Person.prototype={    name:"defaultName",    age:0,    toString:function () {        console.log(this.name,this.age);    }};Person.prototype.name="p1";var p1=new Person();p1.toString();Person.prototype.name="p2";var p2=new Person();p2.toString();console.log("----------------------------------");function P(firstname,lastname){    this.firstname=firstname;    this.lastname=lastname;    this.toString=function () {        console.log(this.firstname,this.lastname);    }}person=new P("Bill2","Gates");person.toString();
0 0