JavaScript的原型链学习研究

今天在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  a
var b=new fun();//new  b
console.log(a.name,b.name);//peter peter
fun.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,打印新的name
console.log(a.name,b.name);//simon simon,a和b引用的还是原来的对象
fun.constructor.prototype.name="jack";//并不能修改原型的属性值
console.log(d.name);//mary

console.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();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一缕阳光直射你的心扉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值