主页 > 电脑硬件  > 

原型链与继承

原型链与继承

#搞懂还是得自己动手#

原型链 function Person(name) { this.name = name; } Person.prototype.sayName = function() { console.log(this.name); }; const p = new Person("Alice");

原型链关系图:

原型链:person->Person.prototype->Object.prototype->null

继承

利用原型实现继承

组合继承 function Parent(name) { this.name = name; } Parent.prototype.say = function() {}; function Child(name) { Parent.call(this, name); // 第1次调用Parent } Child.prototype = new Parent(); // 第2次调用Parent(导致Child.prototype冗余属性)

子类创建一次,父类构造函数需执行两次

寄生组合继承 function inheritPrototype(Child, Parent) { const prototype = Object.create(Parent.prototype); // 创建父类原型副本(避免直接引用) prototype.constructor = Child; // 修正constructor指向 Child.prototype = prototype; } // 父类 function Parent(name) { this.name = name; } Parent.prototype.say = function() {}; // 子类 function Child(name, age) { Parent.call(this, name); // 仅调用一次父类构造函数 this.age = age; } // 继承原型方法 inheritPrototype(Child, Parent); // 子类新增方法 Child.prototype.run = function() {}; 仅调用一次父类构造函数子类原型链纯净,无冗余属性创建中间对象,增加内存开销

参考:彻底搞懂JS原型与原型链-腾讯云开发者社区-腾讯云

标签:

原型链与继承由讯客互联电脑硬件栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“原型链与继承