Javascript面向对象编程--原型式继承

参考书籍:JavaScript设计模式
类式继承
https://blog.csdn.net/weixin_44924173/article/details/90911544

原型式继承是借助原型prototype可以根据已有的对象创建新的对象,同时不必创建新的自定义对象类型。

//原型式
function inheritObject(o){
    //声明一个过渡函数
    function F(){};
    //过渡函数的原型继承父类
    F.prototype=o;
    //返回过渡函数的实例
    return new F();
}

上面的例子是对类式继承的一个封装,其实其中的过渡函数就相当于类式继承中的子类,不过在原型式中作为过渡对象出现,目的是为了创建要返回新的实例化对象。由于过渡类F中的构造函数为空,所以开销比较小。
类似类式继承,所以会遇到同样被修改引用属性的问题

//原型式
function inheritObject(o) {
    //声明一个过渡函数
    function F() { };
    //过渡函数的原型继承父类
    F.prototype = o;
    //返回过渡函数的实例
    return new F();
}
function displayBook() {
    var book = {
        name: "html",
        alikeBook: ["css", "java"]
    }
    var newBook = inheritObject(book);
    newBook.name = "ajax";
    newBook.alikeBook.push("webpack");

    var otherBook = inheritObject(book);
    otherBook.name = "angular";
    otherBook.alikeBook.push("react");
    console.log(book.name);//html
    console.log(book.alikeBook);//["css", "java", "webpack", "react"]
    console.log(newBook.name);//ajax
    console.log(newBook.alikeBook);//["css", "java", "webpack", "react"]
    console.log(otherBook.name);//angular
    console.log(otherBook.alikeBook);//["css", "java", "webpack", "react"]
}

为了解决引用属性被覆盖的风险,引如寄生式继承
https://blog.csdn.net/weixin_44924173/article/details/91046922

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值