国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

JS 創建對象的模式實例小結

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

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

1.工廠模式

抽象了創建具體對象的過程,創建了一種函數,封裝特定的接口創建對象的細節。

新建一個對象 定義屬性和方法 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.構造函數模式 不顯式創建對象 直接將屬性和方法定義在this中 沒有return 通過 new操作符調用

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');

存在問題:

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

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

所有原生引用類型都在其構造函數的原型上定義了方法

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.組合構造和原型模式

構造函數用來定義實例屬性,原型模式用來定義方法和共享的屬性

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.動態原型模式

這里對原型的修改,能夠對所有實例生效,只在初次調用構造函數會執行

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.寄生構造函數模式

工廠模式+構造函數

返回的對象與構造函數、構造函數的原型屬性之間沒有關系 不能依賴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.穩妥構造模式 沒有公共屬性 不使用this 不使用new

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

摘抄自《JavaScript 高級程序設計》第六章

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

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》

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

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 欧美色视频日本片高清在线观看 | 亚洲网址在线 | 国产欧美在线观看不卡一 | 91精品欧美一区二区综合在线 | 欧美一区二区三区在线播放 | 亚洲欧美卡通动漫丝袜美腿 | 欧美午夜在线观看理论片 | 波多野结衣手机视频一区 | 三级全黄的全黄三级三级播放 | 国产精品久久久久9999小说 | 免费一级毛片在线播放放视频 | 在线观看免费av网站 | 亚州三级视频 | 欧美在线观看a | 日本高清在线精品一区二区三区 | 亚洲国产天堂在线网址 | 中文字幕一区二区三区有限公司 | 欧美色久 | 一道精品视频一区二区三区图片 | 久久久久亚洲香蕉网 | 久久国内精品自在自线400部o | 成人午夜兔费观看网站 | 女人张开腿让男人操 | 精品国产免费观看久久久 | 91久久精品青青草原伊人 | 欧美精品v日韩精品v国产精品 | 久草免费在线视频 | 国产成人久久精品区一区二区 | 性欧美精品久久久久久久 | aaaaaa精品视频在线观看 | 亚洲国产日韩欧美高清片a 亚洲国产日韩欧美在线 | 三级国产在线观看 | 久草影视在线观看 | 日本一区二区三区在线 视频 | 国产做a爰片久久毛片 | 日本午色www高清视频 | 日本免费高清视频二区 | 91精品国产高清久久久久久91 | 国产孕妇孕交一级毛片 | 欧美在线小视频 | 免费人成观看在线网 |