国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JS對象創(chuàng)建的幾種方式整理

2024-05-06 15:10:37
字體:
供稿:網(wǎng)友

最近一直在看JS高級程序設(shè)計(jì)這本書,有空來梳理一下幾種創(chuàng)建對象的方式。話不多說,直接步入正題。

第一種:Object構(gòu)造函數(shù)創(chuàng)建

var Person = new Object();Person.name = 'Nike';Person.age = 29;

這行代碼創(chuàng)建了Object引用類型的一個(gè)新實(shí)例,然后把實(shí)例保存在變量Person中。

第二種:使用對象字面量表示法

var Person = {};//相當(dāng)于var Person = new Object();var Person = { name:'Nike'; age:29;  }

對象字面量是對象定義的一種簡寫形式,目的在于簡化創(chuàng)建包含大量屬性的對象的過程。也就是說,第一種和第二種方式創(chuàng)建對象的方法其實(shí)都是一樣的,只是寫法上的區(qū)別不同

在介紹第三種的創(chuàng)建方法之前,我們應(yīng)該要明白為什么還要用別的方法來創(chuàng)建對象,也就是第一種,第二種方法的缺點(diǎn)所在:它們都是用了同一個(gè)接口創(chuàng)建很多對象,會產(chǎn)生大量的重復(fù)代碼,就是如果你有100個(gè)對象,那你要輸入100次很多相同的代碼。那我們有什么方法來避免過多的重復(fù)代碼呢,就是把創(chuàng)建對象的過程封裝在函數(shù)體內(nèi),通過函數(shù)的調(diào)用直接生成對象。

第三種:使用工廠模式創(chuàng)建對象

function createPerson(name,age,job){ var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function(){  alert(this.name);  }; return o; }var person1 = createPerson('Nike',29,'teacher');var person2 = createPerson('Arvin',20,'student');

在使用工廠模式創(chuàng)建對象的時(shí)候,我們都可以注意到,在createPerson函數(shù)中,返回的是一個(gè)對象。那么我們就無法判斷返回的對象究竟是一個(gè)什么樣的類型。于是就出現(xiàn)了第四種創(chuàng)建對象的模式。

第四種:使用構(gòu)造函數(shù)創(chuàng)建對象

function Person(name,age,job){ this.name = name; this.age = age; this.job = job; this.sayName = function(){ alert(this.name); }; }var person1 = new Person('Nike',29,'teacher');var person2 = new Person('Arvin',20,'student');

對比工廠模式,我們可以發(fā)現(xiàn)以下區(qū)別:

1.沒有顯示地創(chuàng)建對象

2.直接將屬性和方法賦給了this對象

3.沒有return語句

4.終于可以識別的對象的類型。對于檢測對象類型,我們應(yīng)該使用instanceof操作符,我們來進(jìn)行自主檢測:

alert(person1 instanceof Object);//turealert(person1 instanceof Person);//turealert(person2 instanceof Object);//turealert(person2 instanceof Object);//ture

同時(shí)我們也應(yīng)該明白,按照慣例,構(gòu)造函數(shù)始終要應(yīng)該以一個(gè)大寫字母開頭,而非構(gòu)造函數(shù)則應(yīng)該以一個(gè)小寫字母開頭。

那么構(gòu)造函數(shù)確實(shí)挺好用的,但是它也有它的缺點(diǎn):

就是每個(gè)方法都要在每個(gè)實(shí)例上重新創(chuàng)建一遍,方法指的就是我們在對象里面定義的函數(shù)。如果方法的數(shù)量很多,就會占用很多不必要的內(nèi)存。于是出現(xiàn)了第五種創(chuàng)建對象的方法

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 桃园县| 秀山| 吴忠市| 页游| 梅河口市| 盐津县| 西丰县| 阿拉善盟| 察隅县| 连江县| 渭南市| 万全县| 呼伦贝尔市| 东丽区| 彩票| 沙洋县| 林州市| 南充市| 遵义市| 达州市| 射洪县| 苏尼特右旗| 太谷县| 来凤县| 涞水县| 宁阳县| 托里县| 比如县| 兴文县| 临夏市| 长治县| 太康县| 常宁市| 达日县| 日土县| 阳泉市| 延津县| 和硕县| 汉川市| 泰州市| 辽宁省|