JS 06 - 建构函式

大家好!

今天开始就要学习函式库的基础了。
我们进入今天的主题吧!


物件模板

我们先来看下方的资料:

let record;

record = {
    name: 'Felix',
    date: '2021-09-16',
    post: 1
};
record; // { name: 'Felix', date: '2021-09-16', post: 1 }

/* ... */

record = {
    name: 'Felix',
    date: '2021-10-15',
    post: 30
};
record.status = true; /* 更新挑战状态 */
record; // { name: 'Felix', date: '2021-10-15', post: 30, status: true }

如果要记录 Felix 的铁人赛发文状态,这是最直觉的方式。
但是,每次赋值都一定要重写物件,难道没有像下方这样的模板吗?

let record;
record = new Ironman('Felix', '2021-09-16', 1);
record; // { name: 'Felix', date: '2021-09-16', post: 1 }
/* ... */

record = new Ironman('Felix', '2021-10-15', 30);
record.finish();
record; // { name: 'Felix', date: '2021-10-15', post: 30, status: true }

当然是有的,这就是接下来要介绍的建构函式。


建构函式

上方的模板能减少很多不必要的动作,也能确保物件的属性都能保持一致。
先来学习建立建构函式:

function Ironman(n, d, p) {
    this.name = n;
    this.date = d;
    this.post = p;
}

这样就建立完建构函式了,上方说的模板就能直接使用了!
建构函式顾名思义就是函式的一种,只是呼叫的方式要搭配 new 这个关键字。
至於建构函式中的 this 则是代表新的物件本身:

new Ironman('Felix', '2021-09-16', 1);
// { name: 'Felix', date: '2021-09-16', post: 1 }

是不是新的物件都有建构函式中的属性呢?


建构函式能让我们节省许多不必要花费的时间,但是接下来其实才是重头戏呢!

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


<<:  RISC-V: 在指令之前的 Register File

>>:  Day 06-Visual Studio 2019下载教学+初步建立chatbot专案

Day29

在64位元系统指标是64/8 = 8bytes,而double也是8bytes若指标指向更小的型态如...

Base64

即使HTTP基本身份验证确实使用Base64来编码用户ID和密码,HTTP仍以明文形式传输编码,并依...

【Day24】维持权限 — 隐藏後门(一)

哈罗~ 来review一下, 之前提到维持权限时, 攻击者会建立後门或Rootkit, 并且会隐藏其...

Day04:团队的组成

当要开发一个大型专案的时候,往往会落入一个错误的认知,就是认为投入的人数越多,开发越快。 软件开发需...

如何让Word的数学公式居左,编号靠右

最近公司赞助我到Intelligent Automation & Soft Computin...