大家好!
我们花了两天介绍原型链和原型继承的原理,今天就要介绍继承的方法了。
我们进入今天的主题吧!
Object.create
/* 使用说明 */
Object.create(obj); // {}
Object.create(obj, properties);
如果要让 JS
的原型继承 Ironman
的原型:
function JS(n, d, p) {
this.name = n;
this.date = d;
this.post = p;
this.subject = 'JavaScript';
}
/* 使 JS.prototype 继承 Ironman.prototype */
JS.prototype = Object.create(Ironman.prototype); // {}
JS.prototype.construtor = JS;
let record;
record = new JS('Felix', '2021-10-15', 30);
record.finish(); // Log: Congratulations!
record; // { name: 'Felix', date: '2021-10-15', post: 30, subject: 'JavaScript', status: true}
因为 JS
继承了 Ironman
,因此使用 JS
建立的物件也能执行 finish
,但是 finish
其实是位於 Ironman
的原型。
JS.prototype; // {}
Ironman.prototype.isPrototypeOf(JS.prototype); // true
这样就能知道,JS
的原型是空物件,但是内部属性 __proto__
是指向 Ironman
的原型。
Object.setPrototypeOf
Object.setPrototypeOf(obj, prototype); // obj
function JS(n, d, p) {
this.name = n;
this.date = d;
this.post = p;
this.subject = 'JavaScript';
}
Object.setPrototypeOf(JS.prototype, Ironman.prototype);
这比 Object.create
更简单了!
extends
或者,也能使用类别函式的 extends
来继承:
class JS extends Ironman {
constructor() {
this.name = n;
this.date = d;
this.post = p;
this.subject = 'JavaScript';
}
}
差不多也到尾声了。
如果对文章有任何疑问,欢迎於下方提问和建议!
我是 Felix,我们明天再见!
前言 昨天我们设计好UI介面後, 我们有一堆按钮和文字框的"元件", 要让这些元...
前言 当我们要使用机器学习演算法来解决自然语言的问题,我们首先必须将文字进行量化( quantifi...
看到这篇觉得满实用的,来跟着看一下。 连结: https://www.protopie.io/blo...
Search Console 是 Google 用来跟网站经营者沟通对话的报表,呈现 Google ...
哇!不知不觉就到第 30 天了,来回顾一下这 30 天的旅程吧! 简单回顾 自己订的铁人赛主题是阅读...