zoukankan      html  css  js  c++  java
  • js 原型式继承注意事项

    1.Person父类

    var Person = {
    name:"default name",
    getName: function () {
    return this.name;
    }
    };

    2.Author是Person的子类

    var Author = clone(Person);
    Author.books = [];
    Author.getBooks = function () {
    return this.books;
    };

    3.authorClone是Author子类

    var authorClone = clone(Author);
    console.log("authorCloneName:"+ authorClone.name);

    //执行完此,父类Peroson和Author中的name为"default name",而authorClone子类的name='new name'
    authorClone.name = 'new name';
    console.log("authorCloneName:"+ authorClone.name);

    //执行完此,Author父类中的books='new book',authorClone子类books='new book'
    authorClone.books.push('new book');

    //执行完此,Author父类中的books还是原来的,
    //authorClone.books = 'new book';
    authorClone.books = [];
    authorClone.books.push('new book1');

    注意:用push导致结果不一样的原因是,由于books是数组类型,直接使用push()是 引用 的方式修改,所有父类的值也会改变; 但是用 "=" 号的形式是修改了引用地址,所有父类的books不会受影响
  • 相关阅读:
    最近重感冒完全不知道知己在记什么

    倾尽一生
    学习笔记,函数
    唯美句
    02 mysql 基础二 (进阶)
    01 mysql 基础一 (进阶)
    16 正则表达式
    15 迭代器、生成器、模块和包
    14 异常
  • 原文地址:https://www.cnblogs.com/LiuB/p/6066196.html
Copyright © 2011-2022 走看看