在上一集解释了工具力的来源
方函式:还记得之前提到的建构式模式吗?
只要提供一个原型,就能大量产生的那个能力。其实,除了东西能复制,人也是可以的喔
function TopToolMan(task,remember){
this.task = task || {daily:["洗衣服","载男友"],weekily:["买当周消耗品"]};
this.remember = remember;
this.forbid = ["不可以色色","不可以妄想"]
this.log = function(){
console.log("不知为何要存在")
}
}
let x = new TopToolMan("采买","不需要");
我:你的内在(原型)看起来还挺压抑的...
方函式:...那不是重点,重点是我所创造出来的人,若没有特定要求(如下图)
let doNothingClone = new TopToolMan();
还是会保有我的基本记忆与能力。这就是透过继承来达成。
这样子,今天不论她需要的是:
let goToTaipeiToBuyPhone = new TopToolMan("买手机","顺便买伴手礼");
他记忆的任务跟会记得的就是你所交代(赋予) 的内容。
let x = new TopToolMan("采买","不需要");
方函式:同一个时间下,要几个人就能有几个人(实例),而且都能去处理不同的事情。
每个复制人内都一个的log
function,虽然是在做同一件事,但都会个别占用了空间,所以可以视为不同的function
。
那要怎麽办? 新增在原型上
function TopToolMan(task,remember){
this.task = task || {daily:["洗衣服","载男友"],weekily:["买当周消耗品"]};
this.remember = remember;
this.forbided = ["不可以色色","不可以妄想"]
topToolMan.prototype.log = function(){
console.log("不知为何要存在")
}
}
上面的行为是等於在原型上新增一个属性或方法
这样一来,所有TopToolMan
创建的instance,都能透过血继限界中(prototype chain)取得这个能力与想法。
一切原理的起因,要说到JavaScript最初的设计由来:所谓物件导向的设计
以下会依序讲述我目前所能理解的部分:
先知道:物件是最基本的程序单位。
原型的本身
还记得昨天的文章测试:原型链的顶部为Object.prototype
这件事吗?
console.log(typeof Object.prototype); // "Object"
原型本身也是一个Object
,符合所谓的物件导向设计的:物件是最基本的程序单位。
Class
所以无法透过类的层级,来达成属性、方法的继承, 那JS怎麽做到继承这件事呢? 你至少可以先知道new
扮演了什麽角色。
new
我们再来制作一个复制人,这次来看看:
实际上在创造每个复制人时,会依序执行以下的步骤
function TopToolMan(task,remember){
this.task = task || {daily:["洗衣服","载男友"],weekily:["买当周消耗品"]};
this.remember = remember;
this.forbided = ["不可以色色","不可以妄想"]
topToolMan.prototype.log = function(){
console.log("不知为何要存在")
}
}
let x = new topToolMan("采买","不需要");
object
,名称为 x
x
的__proto__
会指向TopToolMan
的 prototype,才能继承原型链。this
会指向x
,呼叫topToolMan
这个建构函式x
new
来实现new
这个动作时,实际上会让物件与原型连结。-- to be continued --
那今天就到这边搂!
每天的休息,是为了後面的追求,明天见。
你懂 JavaScript 吗?#19 原型(Prototype)
[笔记] 了解JavaScript中原型(prototype)、原型链(prototype chain)和继承(inheritance)的概念
该来理解 JavaScript 的原型链了
<<: [从0到1] C#小乳牛 练成基础程序逻辑 Day 20 - nested for loop 印出99乘法表
记录完後我们就要开始查询了以下是蛮简单的查询方式。 import psycopg2 import o...
今天会来说明 TypeScript 中内建 ReturnType 和 Parameters 的原始...
接下来我们来看看在SwiftUI 怎麽使用WebView 网页的元件,SwiftUI 框架 有一个缺...
前言 程序写了一阵子之後,工程师就会发展出自己习惯的模式,小到命名方式,大到系统架构,而在我们团队中...
巢状 | 内外回圈 | 分针 秒针 | 99乘法表 ...