" />

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

ECMAscript新特性對象介紹

 更新時間:2021年12月02日 12:04:28   投稿:hqx  
這篇文章主要介紹了ECMAscript新特性對象,對象(object)是JavaScript最重要的數(shù)據(jù)結(jié)構(gòu)。ECMAScript 2015對它進行了重大升級,下面我們來看一下它的改變

1.對象的屬性

1.1屬性表示法

ECMAScript 2015允許在大括號里面,直接寫入變量和函數(shù),作為對象的屬性和方法。這樣的書寫更加簡潔。

示例代碼如下所示:

let name = '一碗周'
let job = '前端攻城獅'

// 屬性表示法 直接寫入變量
let obj1 = {
  name,
  job,
  sayMe() {
    console.log(name)
  }
}
// 等同于 
let obj2 = {
  name: name,
  job: job,
  sayMe: function() {
    console.log(name)
  }
}
console.log(obj1, obj2);

2.計算屬性名

JavaScript中,我們定義屬性時,有兩種方式:中括號[]或.的方式:

// 方法一
obj.foo = true;
// 方法二
obj['a'+'bc'] = 123;


.運算符具有很大的局限性,比如first name這種屬性只能通過中括號的方式來定義。中括號的方式允許我們使用變量或者在使用標識符時會導致語法錯誤的字符串直接量來定義屬性。

例如:

let person = {},
  lastName = "last name";

person["first name"] = "Nicholas";
person[lastName] = "Zakas";
console.log(person["first name"]);      // "Nicholas"
console.log(person[lastName]);          // "Zakas"

這兩種方式只能通過中括號的方式來定義的。在ES5中,你可以在對象直接量中使用字符串直接量作為屬性,例如:

let person = {
  "first name": "Nicholas"
};
console.log(person["first name"]);      // "Nicholas"


但是當我們的屬性名存在一個變量中或者需要計算時,使用對象直接量是無法定義屬性的。

在ES5之前,如果屬性名是個變量或者需要動態(tài)計算 ,則只能通過 對象.[變量名] 的方式去訪問。

let p = {
  name : '李四',
  age : 20
}
let attName = 'name';
console.log(p[attName]) //這里 attName表示的是一個變量名。
// 李四

而且這種動態(tài)計算屬性名的方式 在字面量中 是無法使用的。

let attName = 'name';
  let p = {
    attName : '李四',  // 這里的attName是屬性名,相當于各級p定義了屬性名叫 attName的屬性。
    age : 20
  }
console.log(p[attName])  // undefined


ECMAScript 2015中,把屬性名用[ ]括起來,則括號中就可以引用提前定義的變量。

let attName = 'name';
  let p = {
    [attName] : '李四',  // 引用了變量attName。相當于添加了一個屬性名為name的屬性
    age : 20
  }
console.log(p[attName])  // 李四


在對象直接量中的中括號表明屬性名是需要被計算的,它的內(nèi)容被計算為字符串

3.Object 的方法

3.1Object.is() 方法

ECMAScript 2015比較兩個值是否相等,只有兩個運算符:相等運算符(==)和嚴格相等運算符(===)。

  • 但是這兩個運算符都具有缺點
  • 使用相等運算符的時候,會自動轉(zhuǎn)換數(shù)據(jù)類型

全等運算符會導致NaN不等于自身,以及+0等于-0。

ECMAScript 2015提出 “Same-value equality ”(同值相等)算法,用來解決這個問題。Object.is就是部署這個算法的新方法。它用來比較兩個值是否嚴格相等,與嚴格比較運算符(===)的行為基本一致。

語法結(jié)構(gòu)如下所示:

Object.is(value1, value2);


參數(shù)說明:

  • value1:被比較的第一個值。
  • value2:被比較的第二個值。

返回一個布爾值。

示例代碼如下所示:

console.log(+0 === -0); //true
console.log(NaN === NaN); // false

console.log(Object.is(+0, -0)); // false
console.log(Object.is(NaN, NaN)); // true

3.2Object.assign()方法

Object.assign()方法用于將所有可枚舉屬性的值從一個或多個源對象分配到目標對象。它將返回目標對象 。

語法結(jié)構(gòu)如下所示:

Object.assign(target, ...sources)


參數(shù)說明:

  • target :目標對象
  • sources :源對象

值得注意的是,如果目標對象中的屬性具有相同的鍵,則屬性將被源對象中的屬性覆蓋。后面的源對象的屬性將類似地覆蓋前面的源對象的屬性。

示例代碼如下所示:

let sources = {
  name: '一碗周',
  job: '前端攻城獅'
}
let target = {}
// 使用 assign() 方法所有可枚舉屬性的值從一個或多個源對象分配到目標對象。
Object.assign(target, sources)
console.log(target);
// 驗證是否為深復制
target.name = '一碗粥'
console.log(target, sources); //{ name: '一碗周', job: '前端攻城獅' } { name: '一碗粥', job: '前端攻城獅' }


4.super 關鍵字

我們知道,this關鍵字總是指向函數(shù)所在的當前對象,ECMAScript 2015又新增了另一個類似的關鍵字super,指向當前對象的原型對象。

// 定義一個要作為原型對象的對象
const proto = {
  v: 'Hello'
}
// 定義一個對象
const obj = {
  v: 'World',
  printV1() {
    console.log(this.v);
  },
  // 使用 super 關鍵字
  printV2() {
    console.log(super.v);
  }
}
// 將obj 對象的原型修改為 prtot
Object.setPrototypeOf(obj, proto)
// this 的用法
obj.printV1() // World
// super 的用法
obj.printV2() // Hello


值得注意的是,super關鍵字表示原型對象時,只能用在對象的方法之中,用在其他地方都會報錯。目前,只有對象方法的簡寫法可以讓JavaScript引擎確認,定義的是對象的方法。

5.對象的擴展運算符

對象的擴展運算符(...)用于取出參數(shù)對象的所有可遍歷屬性,拷貝到當前對象之中。

示例代碼如下所示:

// 對象的擴展運算符(...)用于取出參數(shù)對象的所有可遍歷屬性,拷貝到當前對象之中。
let obj = {
  name: '一碗周',
  job: '前端攻城獅'
}
let newObj = {
  ...obj
}
console.log(newObj); // { name: '一碗周', job: '前端攻城獅' }
// 驗證是否為深復制
newObj.name = '一碗粥'
console.log(obj, newObj); // { name: '一碗周', job: '前端攻城獅' } { name: '一碗粥', job: '前端攻城獅' }


由于數(shù)組是特殊的對象,所以對象的擴展運算符也可以用于數(shù)組。

let arr = [1, 2, 3, 4, 5]
let obj = {
  ...arr
}
console.log(obj); // { '0': 1, '1': 2, '2': 3, '3': 4, '4': 5 }


如果擴展運算符后面不是對象,則會自動將其轉(zhuǎn)為對象。

console.log(
  {
  ...1 // 等同于 {...Object(1)}
  }
); // {}
console.log(
  {
  ...true // 等同于 {...Object(true)}
  }
); // {}
console.log(
  {
  ...undefined // 等同于 {...Object(undefined)}
  }
); // {}
console.log(
  {
  ...null // 等同于 {...Object(null)}
  }
); // {}

到此這篇關于ECMAscript新特性對象介紹的文章就介紹到這了,更多相關ECMAscript 對象介紹內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • javaScript中一些常見的數(shù)據(jù)類型檢查校驗

    javaScript中一些常見的數(shù)據(jù)類型檢查校驗

    最近在面試的時候又被問到JS中檢查校驗數(shù)據(jù)類型的方法,所以這篇文章主要給大家介紹了關于javaScript中一些常見的數(shù)據(jù)類型檢查校驗的相關資料,需要的朋友可以參考下
    2022-05-05
  • JavaScript實現(xiàn)淘寶京東6位數(shù)字支付密碼效果

    JavaScript實現(xiàn)淘寶京東6位數(shù)字支付密碼效果

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)淘寶京東6位數(shù)字支付密碼效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • 純js仿淘寶京東商品放大鏡功能

    純js仿淘寶京東商品放大鏡功能

    本文主要介紹了純js仿淘寶京東商品放大鏡功能的實例。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-03-03
  • JS實現(xiàn)簡單拖動模態(tài)框案例

    JS實現(xiàn)簡單拖動模態(tài)框案例

    這篇文章主要為大家詳細介紹了JS實現(xiàn)簡單拖動模態(tài)框案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Element ui tree(樹)實現(xiàn)父節(jié)點選中時子節(jié)點不選中父節(jié)點取消時子節(jié)點自動取消功能

    Element ui tree(樹)實現(xiàn)父節(jié)點選中時子節(jié)點不選中父節(jié)點取消時子節(jié)點自動取消功能

    Elementui因為vue在國內(nèi)的影響而受益 使用量巨大樹作為一種重要的開發(fā)組件應用廣泛,今天帶大家了解樹的靈活應用首先我們來創(chuàng)建一個樹,對Element ui tree父節(jié)點選中時子節(jié)點不選中功能感興趣的朋友跟隨小編一起看看吧
    2023-07-07
  • 循環(huán) vs 遞歸淺談

    循環(huán) vs 遞歸淺談

    本文代碼使用 JavaScript。 一些同學對遞歸的理解還停留在“是一種求階乘比循環(huán)低效的方法”。但其實遞歸和循環(huán)處理的問題是不同。拿“遍歷數(shù)組”這個問題來說:循環(huán)適合同一維度(單層長度不限)上的遍歷,而遞歸則適合跨維度(層數(shù)不限)的遍歷。
    2013-02-02
  • Javascript 創(chuàng)建類并動態(tài)添加屬性及方法的簡單實現(xiàn)

    Javascript 創(chuàng)建類并動態(tài)添加屬性及方法的簡單實現(xiàn)

    下面小編就為大家?guī)硪黄狫avascript 創(chuàng)建類并動態(tài)添加屬性及方法的簡單實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • 在微信小程序中獲取用戶位置的詳細過程

    在微信小程序中獲取用戶位置的詳細過程

    小程序需要用戶授權(quán)獲取用戶位置,獲取到經(jīng)緯度請求數(shù)據(jù)列表并解析為城市地址,用戶選擇城市時把城市解析為經(jīng)緯度,下面這篇文章主要給大家介紹了關于如何在微信小程序中獲取用戶位置的相關資料,需要的朋友可以參考下
    2022-08-08
  • JSON.parse 解析字符串出錯的解決方法

    JSON.parse 解析字符串出錯的解決方法

    程序中很多數(shù)據(jù)是動態(tài)拼接而成的json數(shù)據(jù),最近在用json的時候老是現(xiàn)JSON.parse錯誤
    2010-07-07
  • js控制的回到頁面頂端goTop的代碼實現(xiàn)

    js控制的回到頁面頂端goTop的代碼實現(xiàn)

    在瀏覽網(wǎng)頁的時候應該會經(jīng)常見到右下角有個【回到頂端】的懸浮東東,本文也要使用js實現(xiàn)一下,感興趣的朋友可以參考下哈,希望可以幫助到你
    2013-03-03

最新評論