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

首頁 > 語言 > JavaScript > 正文

JavaScript實現創建自定義對象的常用方式總結

2024-05-06 15:32:51
字體:
來源:轉載
供稿:網友

本文實例講述了JavaScript實現創建自定義對象的常用方式。分享給大家供大家參考,具體如下:

1. 對象字面量方式

對象字面量方式是創建自定義對象的首選模式,簡單方便。

var per = { name:'zhangsan', age:25, job:'html', sayName:function(){  alert(this.name); }}

缺點:使用同一個接口創建很多對象,會產生大量的重復代碼。比如我想再創建一個per1對象,我就得把上面的代碼再重新寫一遍,改變不同的屬性值。

2、工廠模式

工廠模式抽象了創建具體對象的過程。由于在ECMAScript中無法創建類,開發人員就發明了一種函數,用函數來封裝以特定接口創建對象的細節,如下面的例子:

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('zhang',30,'java');var person2 = createPerson('zhao',25,'php');

函數createPerson()能夠根據接受到的參數來構建一個包含所有必要信息的Person對象。可以無數次的調用這個函數,而每次它都會返回一個包含三個屬性和一個方法的對象。

缺點:工廠模式雖然解決了創建多個相似對象的問題,但卻沒有解決對象識別的問題(即怎樣知道一個對象的類型)。

3、構造函數模式

可以使用構造函數模式將前面的例子重寫如下:

function Person(name,age,job){ this.name= name; this.age = age; this.job = job; this.sayName = function(){  alert(this.name); }}var person1 = new Person('zhang',30,'java');var person2 = new Person('zhao',25,'php');

創建自定義的構造函數意味著將來可以將它的實例標識為一種特定的類型。而這正是構造函數模式勝過工廠模式的地方。

然而,使用構造函數的主要問題,就是每個方法都要在每個實例上重新創建一遍。在上面的例子中,person1和person2都有一個名為sayName()的方法,但那兩個方法不是同一個Function的實例,創建兩個完成同樣任務的Function實例的確沒有必要;況且有this對象在,根本不用在執行代碼前就把函數綁定到特定對象上面。因此可以像下面這樣,通過把函數定義轉移到構造函數外部來解決這個問題。

function Person(name,age,job){ this.name= name; this.age = age; this.job = job; this.sayName = sayName();}function sayName(){  alert(this.name);}var person1 = createPerson('zhang',30,'java');var person2 = createPerson('zhao',25,'php');

在這個例子中,我們把sayName()函數的定義轉移到構造函數外部。而在構造函數內部,我們將sayName屬性設置成等于全局的sayName函數,這樣person1和person2對象就共享了在全局作用域中定義的同一個

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

圖片精選

主站蜘蛛池模板: 永胜县| 新源县| 勃利县| 西贡区| 巴里| 罗甸县| 鹰潭市| 光泽县| 德江县| 西林县| 密云县| 谷城县| 彭山县| 宜良县| 昭觉县| 灵山县| 长汀县| 彩票| 石城县| 屏东县| 饶平县| 黄石市| 公主岭市| 松桃| 寿光市| 象山县| 巫山县| 丰原市| 会宁县| 霍邱县| 齐河县| 永德县| 冷水江市| 广南县| 郸城县| 桐城市| 龙州县| 吴桥县| 宜黄县| 措美县| 西乌|