摘要:創(chuàng)建對象和構(gòu)造函數(shù)創(chuàng)建對象有多種方法,上述的一種,屬于構(gòu)造函數(shù)。但是這種方法由于沒有解決對象識別的問題直到對象的類型,并不好接下來的一種方法就是下面重點介紹的自定義構(gòu)造函數(shù)。
對象
每個對象的創(chuàng)建都基于引用類型,比如:
我們可以創(chuàng)建自定義對象,最簡單的方法就是創(chuàng)建一個Object的實例,比如:
上面的例子創(chuàng)建了名為person的對象,并添加了3個屬性。
創(chuàng)建對象和構(gòu)造函數(shù)1.創(chuàng)建對象有多種方法,上述的一種,屬于Object構(gòu)造函數(shù)。
2.此外,還可以用字面量對象創(chuàng)建一個函數(shù),如下:
3.藍(lán)后,是第三種,用工廠模式 創(chuàng)建,如下:
person()函數(shù)會根據(jù)接收的參數(shù)創(chuàng)建一個包含所有信息的對象。但是這種方法由于沒有解決對象識別的問題(直到對象的類型),并不好~
接下來的一種方法就是下面重點介紹的:自定義構(gòu)造函數(shù)。
與上述的構(gòu)造函數(shù)不同,用Object、Array之類的構(gòu)造函數(shù)被稱為原生構(gòu)造函數(shù)。自定義構(gòu)造函數(shù)可以自定義對象的屬性和方法。構(gòu)造函數(shù)就是初始化一個實例對象。
讓我們來看一個栗子~
注意~構(gòu)造函數(shù)有一個特點,默認(rèn)函數(shù)首字母大寫。在上面的栗子中,person1就是Person對象的一個實例。person1有一個constructor的屬性,指向Person
prototype和原型對象我們創(chuàng)建的每一個函數(shù)都有一個prototype屬性,這個屬性是一個指針,指向一個對象,這個對象包含了由特定類型所有實例共享的屬性和方法。我們可以說Person.prototype是person1的原型對象。所以,Person.prototype更像是一個模型和中轉(zhuǎn)站。讓我們看下面的栗子:
如上,我們將callName()方法和所有的屬性添加到了Person的prototype屬性中。Person.prototype是一個第三者,Person和person1實際上是沒有鏈接的,他們兩者的聯(lián)系是通過Person.prototype來建立的,而它里面會保存包括name、age、job等屬性和callName()方法。或許通過下面這個圖更好理解。
更簡單的原型語法我們可能會覺得每次都要寫一遍Person.prototype會比較麻煩,所以我們可以用字面量的方式:
上面的代碼最終的執(zhí)行結(jié)果也是一樣的,只是一點不同:constructor不再指向Person了。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/92855.html
摘要:通過同一個構(gòu)造函數(shù)實例化的多個對象具有相同的原型對象。構(gòu)造函數(shù)的原型對象是實例對象通過屬性也指向原型對象。如果把函數(shù)當(dāng)成實例對象的話,其構(gòu)造函數(shù)是,其原型對象是類似地,函數(shù)的構(gòu)造函數(shù)也是,其原型對象是。 JavaScript的原型(prototype、__proto__、constructor) 構(gòu)造函數(shù):function Foo() {};實例對象: let f1 = new Foo...
摘要:在上面的各種原型的變換中,其實難點就在于構(gòu)造函數(shù)也是對象原型對象等所有對象都由構(gòu)造這四個點。 這篇文章主要是學(xué)習(xí)一下JavaScript中的難點------原型和原型鏈 自定義一個對象 我們學(xué)習(xí)一門編程語言,必然要使用它完成一些特定的功能,而面向?qū)ο蟮恼Z言因為符合人類的認(rèn)知規(guī)律,在這方面做得很好,今天我以JS為例,探索一下JS不同于其他面向?qū)ο蟮恼Z言的地方-------原型和原型鏈 首...
摘要:在上面的各種原型的變換中,其實難點就在于構(gòu)造函數(shù)也是對象原型對象等所有對象都由構(gòu)造這四個點。 這篇文章主要是學(xué)習(xí)一下JavaScript中的難點------原型和原型鏈 自定義一個對象 我們學(xué)習(xí)一門編程語言,必然要使用它完成一些特定的功能,而面向?qū)ο蟮恼Z言因為符合人類的認(rèn)知規(guī)律,在這方面做得很好,今天我以JS為例,探索一下JS不同于其他面向?qū)ο蟮恼Z言的地方-------原型和原型鏈 首...
摘要:所以繼承了對象的所有方法,當(dāng)你用時,會先查一下它的構(gòu)造函數(shù)的原型對象有沒有有方法,沒查到的話繼續(xù)查一下的原型對象有沒有這個方法。 普通函數(shù)與構(gòu)造函數(shù)的區(qū)別 在命名規(guī)則上,構(gòu)造函數(shù)一般是首字母大寫,普通函數(shù)遵照小駝峰式命名法。 在函數(shù)調(diào)用的時候: function fn() { } 構(gòu)造函數(shù):1. new fn( ) 2 .構(gòu)造函數(shù)內(nèi)部會...
摘要:原型對象內(nèi)部也有一個指針屬性指向構(gòu)造函數(shù)實例可以訪問原型對象上定義的屬性和方法。在創(chuàng)建子類型的實例時,不能向超類型的構(gòu)造函數(shù)中傳遞參數(shù)。 贊助我以寫出更好的文章,give me a cup of coffee? 2017最新最全前端面試題 私有變量和函數(shù) 在函數(shù)內(nèi)部定義的變量和函數(shù),如果不對外提供接口,外部是無法訪問到的,也就是該函數(shù)的私有的變量和函數(shù)。 function ...
閱讀 1912·2023-04-25 15:51
閱讀 2559·2021-10-13 09:40
閱讀 2238·2021-09-23 11:22
閱讀 3297·2019-08-30 14:16
閱讀 2715·2019-08-26 13:35
閱讀 1907·2019-08-26 13:31
閱讀 923·2019-08-26 11:39
閱讀 2802·2019-08-26 10:33