JS 08 - 静态方法

大家好!

我们进入今天的主题吧!


物件方法

如果要推入项目至阵列,我们会使用原型方法。
但是,为什麽判断阵列不能使用原型方法呢?

/* 原型方法 */
([]).push(0); // 1
({}).push(0); // TypeError: {}.push is not a function

/* 静态方法 */
Array.isArray([]); // true
Array.isArray({}); // false

正如我们昨天提到的:

阵列和物件的方法不能共用,是因为它们拥有不同的特性。

当我们建立一个功能是判断阵列的原型方法时,就只能应用於阵列而已,实在是没有意义。
如果硬要检查不是阵列的型别,就会出现昨天的 TypeError 错误,因为只有阵列才能使用这个方法。

简而言之,只要确定操作对象是使用建构函式建立的物件就使用原型方法;反之,则使用静态方法。


静态方法

Ironman.progress = function (date) {
    let c = new Date(date);
    let p = (c - new Date('2021-09-15')) / 86400000 / 30 * 100;
    return Math.round(p) + '%';
};

Ironman.progress('2021-09-23'); // '27%'
Ironman.progress('2021-10-15'); // '100%'

当函式的操作对象不同於原型方法的操作对象时,但是又想要将函式和建构函式打包在一起,此时就会写成静态方法,上方的程序码就是一个举例。


执行原型方法必须要先建立物件,静态方法则不需要,因为静态方法就和一般的函示没有两样,限制也比较少,更能处理较多的资料型别。

差不多也到尾声了。
如果对文章有任何疑问,欢迎於下方提问和建议!
我是 Felix,我们明天再见!


<<:  第四章之三

>>:  第7砍 - 第一滴血

Day_13 有线网路应用(五)

如果你看完Day_12 有线网路应用(四)跟着也买了管理型交换机,那麽看到这篇应该会想揍人XD。 今...

Day 25 - WooCommerce: 验收永丰银行刷卡流程

这个系列的 Day 19 至 Day 24 都是为了完成永丰银行数位金融 API 「丰收款」结合 W...

D3JsDay01 资料视觉化 图表说说话—介绍篇

简介 本系列内容将会提及D3Js和资料相关内容的知识,主题订定为资料驾驭网页,其实一部分原因来自D3...

Day 23 - 实战演练 — TextField

今天要实作的是 TextField ,虽然是参照 Material-UI 的概念,但在这边只是实作...

假名数据(Pseudonymized data)

-化名(Pseudonymization) 假名(Pseudonymized)数据可以通过添加信息...