亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

JS 創(chuàng)建對象的模式實例小結(jié)

瀏覽:87日期:2024-05-11 11:56:12

本文實例總結(jié)了JS 創(chuàng)建對象的模式。分享給大家供大家參考,具體如下:

1.工廠模式

抽象了創(chuàng)建具體對象的過程,創(chuàng)建了一種函數(shù),封裝特定的接口創(chuàng)建對象的細(xì)節(jié)。

新建一個對象 定義屬性和方法 return剛新建的對象

function createPerson(name, age, job) { var obj = new Object(); obj.name = name; obj.age = age; obj.job = job; obj.sayHi = function() { congsole.log(this.name); }; return obj;}var person1 = createPerson('name1', 'age1', 'job1');var person2 = createPerson('name2', 'age2', 'job2');

存在問題:

沒有解決對象識別的問題(怎么識別對象的類型)

2.構(gòu)造函數(shù)模式 不顯式創(chuàng)建對象 直接將屬性和方法定義在this中 沒有return 通過 new操作符調(diào)用

function Person(name, age, job) { this.name = name; this.age = age; this.job = job; this.sayHi = function() { console.log(this.name); };}var person1 = new Person('name1', 'age1', 'job1');var person2 = new Person('name2', 'age2', 'job2');

存在問題:

每個方法都要在實例上創(chuàng)建一次3.原型模式

創(chuàng)建的每一個函數(shù)都有prototype原型屬性,這個屬性是一個指針,指向一個對象,這個對象的用途是包含可以由特定類型的所有實例共享的屬性和方法。

所有原生引用類型都在其構(gòu)造函數(shù)的原型上定義了方法

function Person{}Person.prototype.name='name'Person.prototype.age='age'Person.prototype.job='job'Person.prototype.sayHi=function(){ console.log(this.name)}var person1=new Person()var person2=new Person()

存在問題:

所有屬性是被很多實例共享的4.組合構(gòu)造和原型模式

構(gòu)造函數(shù)用來定義實例屬性,原型模式用來定義方法和共享的屬性

function Person(name, age, job) { this.name = name; this.age = age; this.job = job;}Person.prototype={ constructor:Person; sayHi:function(){ console.log(this.name) }}var person1 = new Person('name1', 'age1', 'job1');5.動態(tài)原型模式

這里對原型的修改,能夠?qū)λ袑嵗?,只在初次調(diào)用構(gòu)造函數(shù)會執(zhí)行

function Person(name,age,job){ this.name=name; this.age=age; this.job=job; if(typeof this.sayHi !='function' ){ Person.prototype.sayHi=functong(){ console.log(this.name) } }}var person1 = new Person('name1', 'age1', 'job1');6.寄生構(gòu)造函數(shù)模式

工廠模式+構(gòu)造函數(shù)

返回的對象與構(gòu)造函數(shù)、構(gòu)造函數(shù)的原型屬性之間沒有關(guān)系 不能依賴instanceof來去定對象原型 不建議使用

function Person(name, age, job) { var obj = new Object(); obj.name = name; obj.age = age; obj.job = job; obj.sayHi = function() { congsole.log(this.name); }; return obj;}var person1 = new Person('name1', 'age1', 'job1');7.穩(wěn)妥構(gòu)造模式 沒有公共屬性 不使用this 不使用new

function Person(name, age, job) { var obj = new Object(); // 定義室友變量和函數(shù) obj.sayHi = function() { congsole.log(name); }; return obj;}var person1 = Person('name1', 'age1', 'job1');// name1

摘抄自《JavaScript 高級程序設(shè)計》第六章

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)》

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 国产自一区 | 欧美日韩一区二区三区在线观看 | 久久久免费观成人影院 | 在线欧美精品一区二区三区 | 仑乱高清在线一级播放 | 国产原创剧情在线 | 真人毛片免费全部播放完整 | 92手机看片福利永久国产 | 免费国内精品久久久久影院 | 精品国产综合区久久久久99 | 站长推荐国产午夜免费视频 | 欧美成人性色大片在线观看 | 狠狠色丁香婷综合久久 | 精品国产免费人成网站 | 精品一区二区三区免费毛片爱 | 国产人成免费视频 | 国产精品美女网站在线观看 | 成人自拍网站 | 国产在线观看黄色 | 欧美日韩精品在线观看 | 中文字幕一区二区三区四区 | 日韩毛片在线免费观看 | 观看麻豆影视文化有限公司 | 91精选在线观看 | 黄网站在线观看高清免费 | 欧美一区二区三区成人看不卡 | 高清国产一区二区 | 亚洲三级黄 | 国产二区自拍 | 国内精品福利视频 | 免费成人午夜视频 | 国产精品入口麻豆高清在线 | 可以直接看黄的网站 | 麻豆精品国产免费观看 | 欧美一级看片免费观看视频在线 | 久久成人免费播放网站 | 一级黄色淫片 | 成人一区二区免费中文字幕 | 久草在线播放视频 | 天天做天天爱天天影视综合 | 婷婷色六月 |