JavaScript高級(jí)4

淺拷貝和深拷貝(遞歸)

淺拷貝

適用場(chǎng)景:只能復(fù)制一維的數(shù)據(jù)形式

一維數(shù)據(jù):例如數(shù)組的元素都是簡(jiǎn)單類型,例如對(duì)象的屬性值都是簡(jiǎn)單類型

實(shí)現(xiàn)方式:

數(shù)組方法:slice()

數(shù)組和對(duì)象進(jìn)行遍歷拷貝操作

varobj={

name:'jack',

age:18

};

varobj2={};

// 封裝一個(gè)用來進(jìn)行對(duì)象淺拷貝的函數(shù)

// - current參數(shù) 表示被復(fù)制的對(duì)象

// - target參數(shù) 表示拷貝給那個(gè)對(duì)象

// - 使用要求:current和target必須都是對(duì)象才可以使用

functioncopy(current,target){

for(varkincurrent){

target[k]=current[k];

}

}

copy(obj,obj2);

深拷貝

適用場(chǎng)景:可以對(duì)復(fù)雜類型進(jìn)行完全拷貝

設(shè)置時(shí)與淺拷貝的區(qū)別

需要先檢測(cè)屬性時(shí)是簡(jiǎn)單類型或復(fù)雜類型

對(duì)復(fù)雜類型進(jìn)行具體檢測(cè):檢測(cè)時(shí)數(shù)組或?qū)ο?/p>

通過遞歸調(diào)用,拷貝復(fù)雜類型數(shù)據(jù)

// - current參數(shù) 表示被復(fù)制的對(duì)象// - target參數(shù) 表示拷貝給那個(gè)對(duì)象// - 使用要求:current和target必須都是對(duì)象才可以使用

functioncopy(current,target){

for(varkincurrent){

// 深拷貝時(shí),需要判斷當(dāng)前屬性時(shí)是簡(jiǎn)單類型或復(fù)雜類型,再進(jìn)行分別處理即可

// - typeof可以檢測(cè)簡(jiǎn)單類型,復(fù)雜類型的結(jié)果為'object',null也為'object'

if(typeofcurrent[k]==='object'&&current[k]!==null){

// 對(duì)復(fù)雜類型屬性值的處理

// console.log(current[k], '復(fù)雜類型值');

// 調(diào)用copy函數(shù),將current[k]拷貝給target[k]

// - 對(duì)復(fù)雜類型值進(jìn)行具體的數(shù)組和對(duì)象檢測(cè)操作

target[k]=current[k].constructor===Array?[]:{};

copy(current[k],target[k]);

}else{

// 對(duì)簡(jiǎn)單類型屬性值的處理

target[k]=current[k];

// console.log(current[k], '簡(jiǎn)單類型值');

}

}

}

jQuery插件的設(shè)置方式

學(xué)習(xí)jQuery插件的設(shè)置方式,實(shí)際上就是學(xué)習(xí)如何給jQuery對(duì)象設(shè)置方法

設(shè)置方式:

單個(gè)設(shè)置: $.fn.方法名 = function () { 實(shí)現(xiàn)功能的具體代碼; };

多個(gè)設(shè)置:

$.fn.extend({ 設(shè)置多個(gè)方法,用來實(shí)現(xiàn)插件功能 })

$.fn.extend({

sayHi:function(){

console.log('sayHi');

},

sayHehe:function(){

console.log('sayHehe');

}

});

正則表達(dá)式

簡(jiǎn)介

正則表達(dá)式是一組用來進(jìn)行字符串處理的工具。

創(chuàng)建方式:

構(gòu)造函數(shù)創(chuàng)建方式: new RegExp('正則代碼');

正則字面量形式: /正則代碼/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第3章 基本概念 3.1 語法 3.2 關(guān)鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡(jiǎn)單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,513評(píng)論 0 21
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,654評(píng)論 1 32
  • 基本概念 語法區(qū)分大小寫標(biāo)識(shí)符注釋嚴(yán)格模式語句 關(guān)鍵字和保留字 變量 數(shù)據(jù)類型typeof 操作符Undefine...
    他愛在黑暗中漫游閱讀 1,387評(píng)論 0 1
  • JS基礎(chǔ) 頁面由三部分組成:html:超文本標(biāo)記語言,負(fù)責(zé)頁面結(jié)構(gòu)css:層疊樣式表,負(fù)責(zé)頁面樣式j(luò)s:輕量級(jí)的腳...
    小賢筆記閱讀 673評(píng)論 0 5
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,677評(píng)論 0 4

友情鏈接更多精彩內(nèi)容