日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

js 創建對象的多種方式與優缺點小結

瀏覽:270日期:2024-04-03 17:25:16
早期創建方式

var obj = new Object()obj.name =’xxx’obj.age = 18或使用對象字面量var o1 = { name: ’xxx’, say: () => {}}var o2 = { name: ’xxx’, say: () => {}}

缺點:使用同一個接口創建很多對象,會產生大量重復代碼

工廠模式

function factory(name,age) { var obj = new Object() obj.name = name obj.age = age return obj}var o1 = factory(1, 11)var o2 = factory(2, 22)

優點:解決了創建多個相似對象代碼重復問題缺點:無法識別對象是什么類型

構造函數模式

ECMAScript中可以使用構造函數創建特定類型的對象,如Object,Array這種原生構造函數。此外,也可以創建自定義構造函數,從而定義自定義對象的屬性和方法。

function Person(name, age) { this.name = name this.age = age this.sayName = function() { console.log(this.name) }}var o1 = new Person(1,11)var o2 = new Person(2,22)o1.sayName() // 1o2.sayName() // 2

優點:構造函數模式創建的實例可以區分類型標識(instanceof 判斷)缺點:每個方法都需要在實例上重新創建,如 兩個實例的sayName方法任務相同,但是實際創建了兩個Function實例

構造函數模式優化

function Person(name, age) { this.name = name this.age = age}function sayName () { console.log(this.name)}var o1 = new Person(1,11)var o2 = new Person(2,22)o1.sayName() // 1o2.sayName() // 2

優點:多個實例共享在全局作用域中定義的函數,解決了兩個函數做同一件事的問題缺點:全局作用域定義的函數實際上只能被某個對象調用,全局作用域名不副實,而且如果對象需要定義很多方法,需要創建很多個全局函數,這讓自定義的對象類型沒有封裝特性。

原型模式

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

function Person(){}Person.prototype.name = ’123’Person.prototype.age = 18Person.prototype.sayName = function() { console.log(this.name)}var o1 = new Person(1,11)var o2 = new Person(2,22)o1.sayName() // 123o2.sayName() // 123

優點:解決了實例共享屬性或事件的問題缺點:因為實例共享屬性的原因,對于值為引用類型的屬性來說,一個實例的修改會導致其他實例訪問值更改。如:

function Person(){}Person.prototype.name = ’123’Person.prototype.age = 18Person.prototype.friends = [’a’, ’b’]Person.prototype.sayName = function() { console.log(this.name)}var o1 = new Person(1,11)var o2 = new Person(2,22)o1.friends.push(’c’)console.log(o2.friends) // [’a’, ’b’, ’c’]構造函數和原型模式組合

function Person(name, age) { this.name = name this.age = age this.friends = [’a’]}Person.prototype = { constructor: Person, sayName: function() { console.log(this.name) }}var o1 = new Person(1,11)var o2 = new Person(2,22)o1.sayName() // 1o2.sayName() // 2

優點:每個實例有自己的屬性,同時又共享著方法的引用,還支持傳參數

動態原型模式

function Person(name, age) { this.name = name this.age = age this.friends = [’a’] if(typeof this.sayName != ’function’) { Person.prototype.sayName = function() { console.log(this.name) } }}var o1 = new Person(1,11)var o2 = new Person(2,22)o1.sayName() // 1o2.sayName() // 2

優點:僅在方法不存在的時候創建一次,避免重復創建

寄生構造函數模式

function SpecialArray() { var o = new Array() // 添加值 o.push.apply(o, arguments) // 添加方法 o.toPipedString = function(){ return this.join(’|’) } return o}var o1 = new SpecialArray(1,11)o1.toPipedString() // 1|11

優點:在不更改原始構造函數的情況下為對象添加特殊方法缺點:返回的對象與構造函數以及構造函數的原型沒有任何關系,該方法與在構造函數外部創建的對象沒有什么不同

穩妥構造函數模式

function Person(name) { var o = new Object() // 添加方法 o.getName = function(){ return name } return o}var o1 = new Person(1)o1.getName() // 1

與寄生構造函數不同在于,不使用this,不使用new調用優點:除了使用getName外沒有任何方法能夠訪問name,在一些安全的環境使用缺點:與工廠模式相似,無法識別對象所屬類型

以上就是js 創建對象的多種方式與優缺點小結的詳細內容,更多關于js 創建對象的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美成人一二区| 日韩午夜一区| 欧美一区不卡| 一区二区三区网站| 亚洲乱码一区| 国产精品久一| 91青青国产在线观看精品| 中文字幕人成乱码在线观看| 在线成人动漫av| 日本亚洲视频| 精品少妇一区| 久久久人人人| 午夜精品亚洲| 亚洲字幕久久| 国产欧美88| 91偷拍一区二区三区精品| 日韩视频网站在线观看| 亚洲黄色影院| 国产亚洲一区在线| 欧美日韩黄网站| 久草免费在线视频| 精品日本视频| 夜夜精品视频| 伊人久久成人| 亚洲激情中文| 国产精品午夜一区二区三区| 精品伊人久久| 久久影院一区| 国产伦精品一区二区三区千人斩| 成人午夜国产| 91欧美日韩在线| 99精品综合| 国产欧美88| 国产一区二区三区亚洲| 亚洲欧美日韩在线观看a三区| 国产伦一区二区三区| 99久精品视频在线观看视频| 日韩精品一级| 成人日韩在线| 免费精品视频最新在线| 国产精品扒开腿做爽爽爽软件| 日本精品影院| 国产欧美日韩在线一区二区| 亚洲黄色中文字幕| 日韩高清电影一区| 久久男女视频| 国产精品日韩精品在线播放| 日韩精品麻豆| 91麻豆精品| 久久激情婷婷| 精品国产欧美日韩| 亚洲自拍另类| 精品丝袜在线| 国产精品午夜一区二区三区| 久久中文视频| 亚州av日韩av| 另类专区亚洲| 国产精品一区三区在线观看| 久久久久蜜桃| 日韩亚洲精品在线观看| 久久久国产精品一区二区中文| 国产亚洲精品v| 亚洲91精品| 五月天综合网站| 成人在线黄色| 精品中文字幕一区二区三区av| 久久永久免费| 国产精品一区二区三区av麻| 亚洲日产国产精品| 亚洲欧美日韩视频二区| 人人香蕉久久| 激情国产在线| 久久婷婷国产| 免费一区二区三区在线视频| 亚洲精品激情| 亚洲香蕉视频| 男女男精品网站| 99久久99视频只有精品| 国产亚洲第一伦理第一区| 免费成人在线视频观看| 欧洲激情综合| 午夜av成人| 粉嫩av一区二区三区四区五区| 国产精品色在线网站| 日韩高清电影免费| 青青伊人久久| 国产区精品区| 国产精品欧美三级在线观看| 国产亚洲精aa在线看| 奇米色欧美一区二区三区| 午夜久久av| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲深爱激情| 成人啊v在线| 日韩精品免费一区二区在线观看| 亚洲深夜视频| 99久久99久久精品国产片果冰| 欧美性感美女一区二区| 午夜精品亚洲| 最新国产精品久久久| 中文字幕一区二区三区日韩精品| 亚洲精品观看| 欧美日韩午夜电影网| 国产亚洲人成a在线v网站| 鲁大师精品99久久久| 国产精品久久观看| 香蕉视频亚洲一级| 尤物在线精品| 亚洲开心激情| 国产免费久久| 最近高清中文在线字幕在线观看1| 国产欧美一区二区三区精品酒店 | 国产精品mm| 日本黄色精品| 九一成人免费视频| 亚洲精品成人一区| 精品理论电影在线| 婷婷综合社区| 97久久中文字幕| 精品女同一区二区三区在线观看| 日韩一区二区中文| 婷婷成人在线| 亚洲开心激情| 国产成人精品亚洲线观看| 午夜久久免费观看| 日本电影久久久| 日韩亚洲一区在线| 综合欧美亚洲| 色乱码一区二区三区网站| 亚洲黄色在线| 麻豆一区二区三区| 亚洲国产专区校园欧美| 亚洲精品美女91| 成人台湾亚洲精品一区二区| 亚洲大片在线| 国产欧美一区二区色老头| 福利一区二区| 免费看日韩精品| 国产成人在线中文字幕| 亚洲资源av| 国产在线日韩精品| 蜜臀av亚洲一区中文字幕| 久久亚洲人体| 亚洲一区二区三区高清| 精品国内亚洲2022精品成人| 9色精品在线| 国产66精品| 日本一区免费网站| 成人午夜国产| 国产精品久久久久久久免费软件| 久久美女性网| 久久精品99国产精品| 999精品色在线播放| 国产精品网在线观看| 国产美女一区| av免费不卡国产观看| 日本不卡一二三区黄网| 啪啪国产精品| 麻豆国产欧美日韩综合精品二区| 另类亚洲自拍| 日韩成人亚洲| 国产精品久久久免费| 日韩精品一二三| 日韩精品一卡| 精品国产一级| 91午夜精品| 国产精品腿扒开做爽爽爽挤奶网站| 久久精品理论片| 日韩精品免费观看视频| 九色精品91| 亚洲日本网址| 精品久久在线| 国产精品99久久免费观看| 亚洲综合激情在线| 国产精品人人爽人人做我的可爱| av日韩中文| 久久亚洲人体| 国产精品久久免费视频| 亚洲欧美一级| 美女精品在线| 亚洲精品1区2区| 日韩毛片视频| 精品国产乱码久久久久久1区2匹| 日韩不卡一区二区三区| 蜜桃久久av一区| 首页欧美精品中文字幕| 午夜久久影院| 久久久久亚洲| 亚洲1234区| 亚洲国产成人二区| 国产成人精品一区二区三区在线| 国产日韩视频| 久久精品 人人爱| 日韩不卡在线观看日韩不卡视频| 日韩影院免费视频| 石原莉奈一区二区三区在线观看| 欧美成人综合| 亚洲高清久久| 极品日韩av| 亚洲大全视频|