摘要:也就是說(shuō)這個(gè)變量,保存的內(nèi)存地址就是,同時(shí)被標(biāo)記為的實(shí)例以上就是構(gòu)造函數(shù)的整個(gè)執(zhí)行過(guò)程。
前言算是
當(dāng)一個(gè)函數(shù)創(chuàng)建好以后,我們并不知道它是不是構(gòu)造函數(shù)(構(gòu)造函數(shù)習(xí)慣上首字母大寫(xiě)),只有當(dāng)一個(gè)函數(shù)以 new 關(guān)鍵字來(lái)調(diào)用的時(shí)候,我們才能說(shuō)它是一個(gè)構(gòu)造函數(shù)
eg: function Person (name, age) { this.name = name; this.age = age; } var per1 = new Person("yuchen", 22);構(gòu)造函數(shù)的執(zhí)行流程:
當(dāng)以 new 關(guān)鍵字調(diào)用時(shí),會(huì)創(chuàng)建一個(gè)新的內(nèi)存空間
函數(shù)體內(nèi)部的 this 指向該內(nèi)存"也就是Person的實(shí)例"
* 每當(dāng)創(chuàng)建一個(gè)實(shí)例的時(shí)候,就會(huì)創(chuàng)建一個(gè)新的內(nèi)存空間(#f2, #f3), * 創(chuàng)建 #f2 的時(shí)候,函數(shù)體內(nèi)部的 this 指向 #f2, * 創(chuàng)建 #f3 的時(shí)候,函數(shù)體內(nèi)部的 this 指向 #f3。
執(zhí)行函數(shù)體內(nèi)的代碼
(給 this 添加屬性,就相當(dāng)于給實(shí)例添加屬性)
默認(rèn)返回 this
由于函數(shù)體內(nèi)部的 this 指向新創(chuàng)建的內(nèi)存空間,默認(rèn)返回 this ,就相當(dāng)于默認(rèn)返回了
該內(nèi)存空間,也就是上圖中的 #f1。此時(shí),#f1的內(nèi)存空間被變量 p1 所接受。也就是說(shuō)
p1 這個(gè)變量,保存的內(nèi)存地址就是 #f1,同時(shí)被標(biāo)記為 Person 的實(shí)例
以上就是構(gòu)造函數(shù)的整個(gè)執(zhí)行過(guò)程。
構(gòu)造函數(shù)的返回值構(gòu)造函數(shù)執(zhí)行過(guò)程的最后一步是默認(rèn)返回 this,構(gòu)造函數(shù)的返回值還有其它情況
(1) )沒(méi)有手動(dòng)添加返回值,默認(rèn)返回 this function Person1() { this.name = "zhangsan"; } var p1 = new Person1(); p1: { name: "zhangsan" } (2) 手動(dòng)添加一個(gè)基本數(shù)據(jù)類型的返回值,最終還是返回 this function Person2() { this.age = 28; return 50; } var p2 = new Person2(); console.log(p2.age); // 28 p2: { age: 28 } 注意:如果上面是一個(gè)普通函數(shù)的調(diào)用,那么返回值就是 50 ?。?! (3) 手動(dòng)添加一個(gè)復(fù)雜數(shù)據(jù)類型(對(duì)象)的返回值,最終返回該對(duì)象 例一: function Person3() { this.height = "180"; return ["a", "b", "c"]; } var p3 = new Person3(); console.log(p3.height); // undefined console.log(p3.length); // 3 console.log(p3[0]); // "a" 例二: function Person4() { this.gender = "男"; return { gender: "中性" } } var p4 = new Person4(); console.log(p4.gender); // "中性"
// 構(gòu)造函數(shù)基礎(chǔ)點(diǎn)學(xué)習(xí)完畢啦~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/105870.html
摘要:部分源碼分析小記底層數(shù)據(jù)結(jié)構(gòu)底層的數(shù)據(jù)結(jié)構(gòu)就是數(shù)組,數(shù)組元素類型為類型,即可以存放所有類型數(shù)據(jù)。初始容量大于初始化元素?cái)?shù)組新建一個(gè)數(shù)組初始容量為為空對(duì)象數(shù)組初始容量小于,拋出異常無(wú)參構(gòu)造函數(shù)。 JDK1.8 ArrayList部分源碼分析小記 底層數(shù)據(jù)結(jié)構(gòu) 底層的數(shù)據(jù)結(jié)構(gòu)就是數(shù)組,數(shù)組元素類型為Object類型,即可以存放所有類型數(shù)據(jù)。我們對(duì)ArrayList類的實(shí)例的所有的操作底層都...
摘要:模板字面量相當(dāng)于格式化字符串字符串用兩個(gè)包含起來(lái)并且內(nèi)部的占位符用標(biāo)識(shí)一般用于標(biāo)識(shí)多行文本或者配合函數(shù)使用與箭頭函數(shù)用于數(shù)組是用于讓數(shù)組每一個(gè)元素都調(diào)用函數(shù)的語(yǔ)法基本格式為其中為數(shù)組元素下標(biāo)為當(dāng)前元素所屬的數(shù)組對(duì)象在實(shí)際調(diào)用時(shí)只需要箭頭函數(shù) 1.模板字面量相當(dāng)于格式化字符串,字符串用兩個(gè)``包含起來(lái),并且內(nèi)部的占位符用${variable}標(biāo)識(shí).一般用于標(biāo)識(shí)多行文本或者配合函數(shù)使用. ...
摘要:面向?qū)ο笤兔嫦驅(qū)ο笙腴_(kāi)一個(gè)車,你不需要自己去造一個(gè)車,只需要一把鑰匙,車對(duì)于你來(lái)說(shuō)就是一個(gè)對(duì)象。使用構(gòu)造函數(shù)模式和原型模式組合初學(xué)筆記,個(gè)人記錄備忘,如有謬誤,歡迎指正。 面向?qū)ο蟆⒃?面向?qū)ο?想開(kāi)一個(gè)車,你不需要自己去造一個(gè)車,只需要一把鑰匙,車對(duì)于你來(lái)說(shuō)就是一個(gè)對(duì)象。在JavaScript中的對(duì)象, 具有屬性,當(dāng)屬性的值是一個(gè)函數(shù)時(shí),那么此屬性就是這個(gè)對(duì)象的方法.訪問(wèn)屬性的方...
摘要:全局環(huán)境調(diào)用函數(shù)的對(duì)象實(shí)際為,所以函數(shù)內(nèi)的指向構(gòu)造函數(shù)通過(guò)構(gòu)造函造函數(shù)生成了一個(gè)新對(duì)象,指向這個(gè)新對(duì)象。學(xué)習(xí)前端一個(gè)月,上一周面試了大概多家,收獲的卻是寥寥。為了效率,前端各方面的內(nèi)容都有涉獵,深度卻相當(dāng)不足,面試時(shí)暴露各種問(wèn)題。 最近面試了不少家,苦于前端經(jīng)驗(yàn)薄弱,被各種血虐。做了不少家面試題,把各種不會(huì)的回來(lái)再做一遍,作為經(jīng)驗(yàn)總結(jié)吧。 1.如何最優(yōu)性能去重一個(gè)數(shù)組? 方法有好多,比...
摘要:全局環(huán)境調(diào)用函數(shù)的對(duì)象實(shí)際為,所以函數(shù)內(nèi)的指向構(gòu)造函數(shù)通過(guò)構(gòu)造函造函數(shù)生成了一個(gè)新對(duì)象,指向這個(gè)新對(duì)象。學(xué)習(xí)前端一個(gè)月,上一周面試了大概多家,收獲的卻是寥寥。為了效率,前端各方面的內(nèi)容都有涉獵,深度卻相當(dāng)不足,面試時(shí)暴露各種問(wèn)題。 最近面試了不少家,苦于前端經(jīng)驗(yàn)薄弱,被各種血虐。做了不少家面試題,把各種不會(huì)的回來(lái)再做一遍,作為經(jīng)驗(yàn)總結(jié)吧。 1.如何最優(yōu)性能去重一個(gè)數(shù)組? 方法有好多,比...
閱讀 2020·2023-04-26 01:41
閱讀 2543·2021-11-24 09:39
閱讀 1956·2021-11-24 09:38
閱讀 1995·2021-11-19 09:40
閱讀 3810·2021-11-11 11:02
閱讀 3322·2021-10-20 13:48
閱讀 3249·2021-10-14 09:43
閱讀 4500·2021-09-02 15:11