真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ES6Object.assign()怎么用-創(chuàng)新互聯(lián)

這篇文章主要介紹了ES6Object.assign()怎么用,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

目前創(chuàng)新互聯(lián)公司已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、伊春網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

1.Object.assign()基本用法:

Object.assign方法用來(lái)將源對(duì)象(source)的所有可枚舉屬性,復(fù)制到目標(biāo)對(duì)象(target)。它至少需要兩個(gè)對(duì)象作為參數(shù),第一個(gè)參數(shù)是目標(biāo)對(duì)象,后面的參數(shù)都是源對(duì)象。

let targetObj1 = { a: 1 };    let sourceObj1 = { b: 1 };    let sourceObj11 = { c: 3 };    Object.assign(targetObj1, sourceObj1, sourceObj11);    console.log(targetObj1);

注:如果目標(biāo)對(duì)象與源對(duì)象有同名屬性,或多個(gè)源對(duì)象有同名屬性,則后面的屬性會(huì)覆蓋前面的屬性。

let targetObj1 = { a: 1, b: 2 };    let sourceObj1 = { b: 1 };    let sourceObj11 = { c: 3 };    Object.assign(targetObj1, sourceObj1, sourceObj11);    console.log(targetObj1);

如果只有一個(gè)參數(shù),Object.assign會(huì)直接返回該參數(shù)。

let targetObj1 = { a: 4 }    Object.assign(targetObj1);    console.log(targetObj1)

如果該參數(shù)不是對(duì)象,則會(huì)先轉(zhuǎn)成對(duì)象,然后返回。

console.log(typeof (Object.assign(2)));

由于undefined和null無(wú)法轉(zhuǎn)成對(duì)象,所以如果它們作為參數(shù),就會(huì)報(bào)錯(cuò)。

console.log(typeof(Object.assign(null))); console.log(typeof(Object.assign(underfind)));

注意:如果非對(duì)象參數(shù)出現(xiàn)在源對(duì)象的位置(即非首參數(shù)),那么處理規(guī)則有所不同。首先,這些參數(shù)都會(huì)轉(zhuǎn)成對(duì)象,如果無(wú)法轉(zhuǎn)成對(duì)象,就會(huì)跳過(guò)。這意味著,如果undefined和null不在首參數(shù),就不會(huì)報(bào)錯(cuò)。其他類型的值(即數(shù)值、字符串和布爾值)不在首參數(shù),也不會(huì)報(bào)錯(cuò)。但是,除了字符串會(huì)以數(shù)組形式,拷貝入目標(biāo)對(duì)象,其他值都不會(huì)產(chǎn)生效果。

Object.assign只拷貝自身屬性,不可枚舉的屬性(enumerable為false)和繼承的屬性不會(huì)被拷貝。

let obj1 = Object.assign({ dwb: 'zjl' },Object.defineProperty({}, 'zmf', {enumerable: false,value: 'zmf'}))console.log(obj1);let obj2 = Object.assign({ dwb: 'zjl' },Object.defineProperty({}, 'zmf', {enumerable: true,value: 'zmf'}))console.log(obj2);

對(duì)于嵌套的對(duì)象,Object.assign的處理方法是替換,而不是添加。

var target = { a: { b: 'c', d: 'e' } }var source = { a: { b: 'hello' } }Object.assign(target, source);

上面代碼中,target對(duì)象的a屬性被source對(duì)象的a屬性整個(gè)替換掉了,而不會(huì)得到{ a: { b: 'hello', d: 'e' } }的結(jié)果。這通常不是開(kāi)發(fā)者想要的,需要特別小心。有一些函數(shù)庫(kù)提供Object.assign的定制版本(比如Lodash的_.defaultsDeep方法),可以解決深拷貝的問(wèn)題。

注意,Object.assign可以用來(lái)處理數(shù)組,但是會(huì)把數(shù)組視為對(duì)象。

console.log(Object.assign([1, 2, 3], [4, 5]));

其中,4覆蓋1,5覆蓋2,因?yàn)樗鼈冊(cè)跀?shù)組的同一位置,所以就對(duì)應(yīng)位置覆蓋了。

Object.assign方法實(shí)行的是淺拷貝,而不是深拷貝。也就是說(shuō),如果源對(duì)象某個(gè)屬性的值是對(duì)象,那么目標(biāo)對(duì)象拷貝得到的是這個(gè)對(duì)象的引用。

var object1 = { a: { b: 1 } };var object2 = Object.assign({}, object1);object1.a.b = 2;console.log(object2.a.b);

2.用途

2.1為對(duì)象添加屬性

2.2為對(duì)象添加方法

2.3克隆對(duì)象

function copyFnc(origin) {return Object.assign({}, origin)}var sur = { a: 1, b: 2 };console.log(copyFnc(sur));

上面代碼將原始對(duì)象拷貝到一個(gè)空對(duì)象,就得到了原始對(duì)象的克隆。

不過(guò),采用這種方法克隆,只能克隆原始對(duì)象自身的值,不能克隆它繼承的值。如果想要保持繼承鏈,可以采用下面的代碼。

function clone(origin) {let originProto = Object.getPrototypeOf(origin);return Object.assign(Object.create(originProto), origin);}

在JS里子類利用Object.getPrototypeOf去調(diào)用父類方法,用來(lái)獲取對(duì)象的原型。

2.4 合并多個(gè)對(duì)象

//多個(gè)對(duì)象合并到某個(gè)對(duì)象const merge = (target, ...sources) => Object.assign(target, ...sources);//多個(gè)對(duì)象合并到新對(duì)象const merge = (...sources) => Object.assign({}, ...sources);

2.5為屬性指定默認(rèn)值

const DEFAULTS = {logLevel: 0,outputFormat: 'html'};function processContent(options) {let options = Object.assign({}, DEFAULTS, options);}

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“ES6Object.assign()怎么用”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!


網(wǎng)頁(yè)題目:ES6Object.assign()怎么用-創(chuàng)新互聯(lián)
當(dāng)前地址:http://weahome.cn/article/cssioc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部