欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js中常見的4種創(chuàng)建對象方式與優(yōu)缺點

 更新時間:2022年01月24日 15:02:07   作者:攻城獅小豪  
不管是哪門語言,千變萬化不離其宗,深入理解其本質,方能應用自如,下面這篇文章主要給大家介紹了關于js中常見的4種創(chuàng)建對象方式與優(yōu)缺點,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

前言

說起創(chuàng)建對象,最容易想到的便是通過對象字面量方式直接定義一個對象吧,但這種方式只能創(chuàng)建少量,單獨且相互間無聯系的對象。若要批量創(chuàng)建對象,該如何?

1、工廠模式

實現:

function fn(a,b){
    let obj = new Object()
    obj.a=a
    obj.b=b
    return obj
}

const test = fn(1,2)

優(yōu)點:解決了創(chuàng)建多個類似對象的問題

缺點:沒解決對象標識問題(即新建對象是什么類型)

2、構造函數模式

實現:

function Fn(a,b){
    this.a=a
    this.b=b
    this.c=function(){
          console.log(this.a)
    }
}

const test1 = new Fn(1,2)
const test2 = new Fn(1,2)
console.log(test1.c === test2.c)// false

優(yōu)點:new隱式創(chuàng)建對象,寫法簡潔

缺點:構造函數定義的方法會在每個實例上都要創(chuàng)建一遍(除非該方法聲明提到全局)

3、原型模式

實現:

function Fn(a,b){
    Fn.prototype.a=a
    Fn.prototype.b=b
    Fn.prototype.c=function(){
          console.log(a)
    }
}

const test = new Fn(1,2)

優(yōu)點:構造函數中定義的屬性和方法都可以被對象實例共享

缺點:原型上的屬性值如果是引用值,該值會在創(chuàng)建后的實例之間被污染,如下

function Fn(){
    Fn.prototype.a=[1,2]
}

const test1 = new Fn()
const test2 = new Fn()
test1.a.push(3)
console.log(test1.b, test2.b)// [1,2,3] [1,2,3] 
const test3 = new Fn()// 原型上屬性會重新賦值
console.log(test1.b, test2.b,test3.b)// [1,2] [1,2] [1,2] 

4、Object.create()

實現:

const obj = { a:1 , b:2 }

const test = Object.create(obj)
console.log(test.a)// 1

優(yōu)點:通過一個對象構造另一個對象

缺點:構造過程是淺克隆,共享的引用值依舊存在被污染問題

其他模式

除了以上幾種常見的模式外,批量創(chuàng)建對象的方式還有

  • 動態(tài)原型模式:僅在第一次調用構造函數時,將方法賦給原型對象的相應屬性,其他示例的處理方式同構造函數模式
  • 寄生構造函數模式:僅僅封裝創(chuàng)建對象的代碼,然后再返回新創(chuàng)建的對象,仍使用new操作符調用
  • 穩(wěn)妥構造函數模式:沒有公共屬性,只有私有變量和方法,以及一些get/set方法,用以處理私有變量。

總結

到此這篇關于js中常見的4種創(chuàng)建對象方式與優(yōu)缺點的文章就介紹到這了,更多相關js常見創(chuàng)建對象方式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 使用OpenLayers3 添加地圖鼠標右鍵菜單

    使用OpenLayers3 添加地圖鼠標右鍵菜單

    這篇文章主要介紹了使用OpenLayers3 添加地圖鼠標右鍵菜單的相關資料,需要的朋友可以參考下
    2015-12-12
  • js計算兩個時間之間天數差的實例代碼

    js計算兩個時間之間天數差的實例代碼

    這篇文章主要介紹了js計算兩個時間之間天數差的實例代碼,有需要的朋友可以參考一下
    2013-11-11
  • 很多人都是用下面的js刷新站IP和PV

    很多人都是用下面的js刷新站IP和PV

    有人用JS做網站跳轉,也有人用很多其他作弊的方法,今天又發(fā)現有太多的人用這樣的方法實現兩個站的IP共享,把http://www.dbjr.com.cn替換成自己的站
    2008-09-09
  • JS自定義滾動條效果

    JS自定義滾動條效果

    這篇文章主要為大家詳細介紹了JS自定義滾動條效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • BootStrap表單驗證實例代碼

    BootStrap表單驗證實例代碼

    這篇文章主要介紹了bootstrap表單驗證的實例代碼,代碼中包括引入的js文件,具體實現方法,大家參考本文
    2017-01-01
  • WebGL?繪制與變換使用示例詳解

    WebGL?繪制與變換使用示例詳解

    這篇文章主要為大家介紹了WebGL?繪制與變換使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • JS模擬實現京東快遞單號查詢

    JS模擬實現京東快遞單號查詢

    這篇文章主要為大家詳細介紹了JS模擬實現京東快遞單號查詢,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 微信小程序商品詳情頁底部彈出框

    微信小程序商品詳情頁底部彈出框

    這篇文章主要為大家詳細介紹了微信小程序商品詳情頁底部彈出框,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • JavaScript事件冒泡與事件捕獲實例分析

    JavaScript事件冒泡與事件捕獲實例分析

    這篇文章主要介紹了JavaScript事件冒泡與事件捕獲,結合實例形式分析了事件冒泡、阻止冒泡以及事件捕獲的相關原理、操作技巧與注意事項,需要的朋友可以參考下
    2018-08-08
  • 微信小程序獲取當前時間及星期幾的實例代碼

    微信小程序獲取當前時間及星期幾的實例代碼

    這篇文章主要給大家介紹了關于利用微信小程序獲取當前時間及星期幾的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09

最新評論