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