JavaScript 继承(十一)原型六

17 篇文章 0 订阅

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

//之前的帖子 js原型(三) 和js 构造函数 继承 都已经说了继承,但都不是很好
//目前推荐使用 如下方法
function Foo(){
    this.a = 1;
    Foo.prototype.b = 2;
    Foo.prototype.show = function(){
        console.log(this.b)
    }
}

function Bar(){
    Foo.call(this);
    this.c = 3;
}

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

var bar = new Bar();

bar.show();//2

//首先执行的是 Bar.prototype = Object.create(Foo.prototype); es6 貌似有新语法 更加安全准确官方的修改。。
//但是可读性不如这个。。。而且我也写习惯了。。。。。当然你也可以用新语法
//Object.setPrototypeOf( Bar.prototype, Foo.prototype );
//执行完之后 Bar。prototype 指向了 Foo.prototype Bar的后代就能访问到 Foo.prototype的 属性b 和 函数show了。设计的时候b和show就是设计成可以共享的。函数自然不用说。属性就要视情况而定。比如一个类 人每个人都要能都遵循一样的吃饭规则,吃饭这个函数可以共用,所有人都共用一个家园 -- 地球 家园这个属性也可以共用,但是每个人都有自己的名字,名字就不能共用,好比Foo.a。
//所以Bar 执行Foo.call(this) 在Bar上创建了一个a 当然也会执行 Foo.prototype.b = 2;但是无所谓。比如我现在可以访问bar.b 结果是2。那么如果我又var bar2 = new Bar()。 还是赋值成2 那结果还是没问题。如果我手动更改bar.b的值。那么就会发生屏蔽。具体看我的ja原型(二)。这样就可以做到每次new 每个对象有各自属于自己的a和共用的b和show

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值