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

首頁 > 語言 > JavaScript > 正文

JavaScript創(chuàng)建對象的常用方式總結(jié)

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

本文實例講述了JavaScript創(chuàng)建對象的常用方式。分享給大家供大家參考,具體如下:

JS中沒有類的概念,那么怎么創(chuàng)建對象呢?下面一一來細(xì)說!

傳統(tǒng)的創(chuàng)建對象的方式:

1、創(chuàng)建Object的實例

var person = new Object();person.name = "Alice";person.age = 12;person.showName = function() { alert(this.name);};

2、對象字面量形式創(chuàng)建單個對象

var person = { name : "Alice"; age : 12; showName : function() {  alert(person.name); }};

創(chuàng)建對象的五種設(shè)計模式

1、工廠模式

雖然Object構(gòu)造函數(shù)和對象字面量都可以用來創(chuàng)建單個對象,但這個方式有個明顯的缺點:使用同一個接口創(chuàng)建很多對象,會產(chǎn)生大量重復(fù)的代碼。為了解決這個問題,開始使用工廠模式。

function createPerson(name, age) { var obj = new Object(); obj.name = name; obj.age = age; obj.showName = function() {  alert(this.name); }; return obj;}var person1 = createPerson("Alice", 23);var person2 = createPerson("Bruce", 22);

2、構(gòu)造函數(shù)模式

工廠模式雖然解決了創(chuàng)建多個相似對象的問題,但卻沒有解決對象識別的問題(即不知道對象的類型),于是,又出現(xiàn)了構(gòu)造函數(shù)模式,自定義的構(gòu)造函數(shù)意味著將來可以把它的實例識別為一種特定的類型。這是構(gòu)造函數(shù)模式勝過工廠模式的地方。

function Person(name, age) { this.name = name; this.age = age; this.showName = function() {  alert(this.name); };}var person1 = new Person("Alice", 23);var person2 = new Person("Bruce", 22);

構(gòu)造函數(shù)模式與工廠模式的不同之處在于:

1)沒有顯式地創(chuàng)建對象;

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

3)沒有return語句

構(gòu)造函數(shù)的問題:每個方法都要在每個實例上重新創(chuàng)建一遍。由于JavaScript中的函數(shù)是對象,每定義一個函數(shù),就是實例化了一個Funtion對象,因此,使用構(gòu)造函數(shù)創(chuàng)建的每個實例都有一個名為showName()的方法,但這些方法不是同一個Function的實例。不同實例上的同名函數(shù)是不相等的,因此person1.showName == person2.showName返回false。

可以通過把函數(shù)定義轉(zhuǎn)移到構(gòu)造函數(shù)外部來解決這個問題,如下:

function Person(name,age,job) { this.name = name; this.age = age; this.showName = showName;}function showName(){ alert(this.name);}var person1 = new Person("Alice", 23);var person2 = new Person("Bruce", 22);

這樣雖然解決了方法多次創(chuàng)建問題,但又出現(xiàn)了新的問題:

(1)在全局作用域中定義的函數(shù)實際上只能被某個對象調(diào)用,這讓全局作用域名不副實。

(2)如果對象需要定義很多方法,那么就需要定義很多個全局函數(shù),那么就毫無封裝性可言了。

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

圖片精選

主站蜘蛛池模板: 定南县| 通江县| 广灵县| 和平县| 舒城县| 新余市| 商都县| 镇坪县| 丹寨县| 读书| 合水县| 大丰市| 八宿县| 舟曲县| 佛教| 射洪县| 博白县| 旬阳县| 喀喇| 曲麻莱县| 江永县| 石阡县| 汤原县| 昭苏县| 长兴县| 伊川县| 汉阴县| 泽库县| 宜兴市| 横山县| 夏河县| 湘潭市| 老河口市| 民权县| 佛冈县| 柳江县| 嘉义市| 江津市| 和龙市| 司法| 闻喜县|