JavaScript 继承(八)原型三补充

17 篇文章 0 订阅

不好意思因为懒,,我懒得弄图,,就是代码+注释

//js 原型 (三)  我提到了一下情况
function Foo(){
    this.a = 0;
    Foo.prototype.b = {x:1}
    
    //新增这一句
    Foo.prototype.d = 5;
}

var foo = new Foo();

function Bar(){
    this.c = {x:2}
}

Bar.prototype = Object.create(Foo.prototype)


var bar = new Bar();
var bar2 = new Bar();

console.log(bar.b.x);//1
bar2.b.x=5;
console.log(bar.b.x);//5
//为什么要用对象 而不简单的用一个 整数呢? 测试下
console.log(bar.d);//5
bar2.d = 666;
console.log(bar.d);//5 为什么呢
//string 和 number 有不变性 也就是说 bar2.d = 666; 不会去修改Foo.prototype.d的值 而是会产生一个新的 值为 666 的number对象 然后bar2上会多出一个d 屏蔽 Foo.prototype.d 自然就不影响bar.d
//这也算是解释了 JS原型(二)中的屏蔽为什么会分三种情况 设置了set 不用说肯定调用set 如果没设置。由于上述原因就会产生一个新的同名变量。并且会复制原变量的属性描述表(我猜的。。至少会复制是否可写。。)产生屏蔽

console.log(bar.hasOwnProperty("d"));//false
console.log(bar2.hasOwnProperty("d"));//true

//既然如此 就应该可以理解 下面的代码为什么会是这样的一个结果
var i = 5;
i += i -= i *= i /= i;
console.log(i);//5     c语言下妥妥的 0 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值