不论如何,似乎都有人能帮忙方函式收东西
方函式:好像还没提到我的第三型态 -- 建构式
我:.... 还有啊,不愧是头等工具人吗?
(话还没说完,他就从口袋拿出手机)
方函式:这样解释能力可能最直接了,建构式模式!(手发光)
function MakePhone(size,battery){
this.size = size;
this.battery = battery;
}
let copiedPhone1 = new MakePhone(20,20000);
let copiedPhone2 = new MakePhone(20,20000);
let copiedPhone3 = new MakePhone(20,20000);
(方函式手上出现好几台一样的手机)
方函式:只要知道东西的资讯(如型号),透过这个模式,我能大量复制相同的东西。
console.log(copiedPhone1);
console.log(copiedPhone2);
console.log(copiedPhone3);
究竟是怎麽做到的?
在物件导向程序设计里,用来创造物件的工具通常被称为 constructor,透过建构式可以大量复制相似内容的物件(被称为instance)。
function Person(name, age) {
this.name = name;
this.age = age;
}
let person1 = new Person("Wendy", 18);
let person2 = new Person("Andy",18);
console.log(x);
但有几件事要注意:
它所建立的函式并不使用语汇环境(lexical scoping),而是作为**顶层函式(top-level-function)**存在,什麽意思?
let scope = "global";
function Constructor(){
let scope = "local";
return new Function a("return scope");
}
console.log(Constructor()()); // => global
这个建立的函式会被建立在全域,所以它读取不到建构式内的变数scope
,而是会读到全域的scope
。
new
会怎样呢?let person3 = Person("Belinda",18);
console.log(x);//get undefined
刚刚可以的,现在怎都不行了?
原因这样是无法判断你的动作,是要执行这个程序,或是要根据建构式function
去建立新的object
。
那重点根本都在new麻,所以new
做了什麽?
使用new
这个关键字执行Person()
时,会按顺序发生以下的事情:
Person
。Person
里的 this
指向new
出的空物件。透过console.log()
再重看一次上面的程序码:
function Person(name, age) {
this.name = name;
console.log(this);//取得name这个properties
this.age = age;
console.log(this);//取得age这个properties
}
let x = new Person("rex", "18");
console.log(x);
return
,原因如下:
function Person(name, age) {
this.name = name;
this.age = age;
return 1;
}
let x = new Person("rex", "18");
console.log(x);
回传基本型别,不会影响this
的内容,但若是物件型别的话...
function Person(name, age) {
this.name = name;
this.age = age;
return [];
}
就会得到回传的物件型别内容
let x = new Person("rex", "18");
console.log(x);//get []
-- to be continued --
那今天就到这边搂!今天分享喜欢的歌是:
无妄合作社 No-nonsense Collective〈青春之歌 The Grand Tour〉Official Music Video
https://www.youtube.com/watch?v=qRCnF7SMufo
每天的休息,是为了後面的追求,明天见。
008
JavaScript大全
D13 - 做出鸡蛋糕 new + Constructor
[笔记] 谈谈 JavaScript 中内建的 function constructors 及应注意的地方
建构物件范本:Constructor Function
<<: [Android Studio 30天自我挑战] ToggleButton元件介绍
今日目标 认识完变数、常数、型态之後,接着来认识将资料做集合处理的型别: 阵列 (Array) 字典...
前言: 大家好,这是我第一次参加铁人赛 主要是想记录一下自己学过的东西 并和大家分享一些我觉得很重要...
其实今年才刚学Vue.js ,目前的程度大概就是写几个简单的功能而已,要写一个比较完整的网站还是十分...
废话不多说直接开始 我们点选订单查询按钮会连结到这个表单 全域变数 static public st...
无状态stateless指的是web客户端在发送请求时,到底需不需要一直带着验证资讯,或者是所谓的上...