日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【ES6(2015)】Object对象

發布時間:2025/3/15 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【ES6(2015)】Object对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1. 屬性簡潔表示法
  • 2. 屬性名表達式
  • 3. Object.is()
  • 4. Object.assign()
  • 5. in
  • 6. 對象的遍歷方式

1. 屬性簡潔表示法

ES5表示Object必須是 key: value 形式:

let name = 'hello' let age = 18 let obj = {name: name,age: age,study: function() {console.log(this.name + '正在學習')} }

ES6 可以簡寫(當value的變量名和key一致):

let name = 'hello' let age = 18 let obj = {name,age,study() {console.log(this.name + '正在學習')} }

2. 屬性名表達式

在 ES6 可以直接用變量或者表達式來定義Object的 key。

let s = 'address' let obj = {name: 'xiaoming',[s]: 'shenzhen',say () {console.log('hello' + this.name)} }

3. Object.is()

判斷兩個對象是否相等,Object.is不會強制轉換兩邊的值。

== 等同,比較運算符,兩邊值類型不同的時候,先進行類型轉換,再比較;
=== 恒等,嚴格比較運算符,不做類型轉換,類型不同就是不等;
Object.is() 是ES6新增的用來比較兩個值是否嚴格相等的方法,與===的行為基本一致,但有區別

=== 的特性:

  • 如果類型不同,就不相等
  • 如果兩個都是數值,并且是同一個值,那么相等;值得注意的是,如果兩個值中至少一個是NaN,那么不相等(判斷一個值是否是NaN,可以用isNaN()或Object.is()來判斷)。
  • 如果兩個都是字符串,每個位置的字符都一樣,那么相等;否則不相等。
  • 如果兩個值都是同樣的Boolean值,那么相等。
  • 如果兩個值都引用同一個對象或函數,那么相等,即兩個對象的引用地址也必須保持一致;否則不相等。
  • 如果兩個值都是null,或者都是undefined,那么相等。

Object.is() 與 ===基本一致,不過有兩處不同:

  • +0不等于-0
  • NaN等于自身
+0 === -0 //true NaN === NaN // falseObject.is(+0, -0) // false Object.is(NaN, NaN) // true

判斷對象時,需要引用地址也相同:

let obj1 = { // 相當于new Object()name: 'xiaoming',age: 18 }let obj2 = { // 相當于new Object()name: 'xiaoming',age: 18 } console.log(obj1 == obj2) // false 判斷地址console.log(Object.is(obj1, obj2)) // falselet obj2 = obj1console.log(Object.is(obj1, obj2)) // true

4. Object.assign()

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

const target = {a: 1,b: 2 } const source = {b: 4,c: 5 }const returnedTarget = Object.assign(target, source)console.log(target) // expected output: Object { a: 1, b: 4, c: 5 }console.log(returnedTarget) // expected output: Object { a: 1, b: 4, c: 5 }

源對象可以添加零個或多個,如果是零個直接返回目的對象
如果目標對象不是對象,則會自動轉換為對象
Object.assign()對于引用數據類型屬于淺拷貝

對象的淺拷貝:淺拷貝是對象共用的一個內存地址,對象的變化相互印象。
對象的深拷貝:簡單理解深拷貝是將對象放到新的內存中,兩個對象的改變不會相互影響。

5. in

  • 判斷對象里面有沒有這個變量或者方法
let obj = {a: 1,b: 2 } console.log('a' in obj) // true
  • 判斷數組的下標有沒有值,是不是為空
let arr = [1,,'hello',undefined,null,''] console.log(0 in arr) // true console.log(1 in arr) // false console.log(2 in arr) // true console.log(3 in arr) // true console.log(4 in arr) // true console.log(5 in arr) // true

6. 對象的遍歷方式

let obj = {name: 'xiaoming',age: 18,address: 'shenzhen' }// 1. for...in 遍歷 for (let key in obj) {console.log(key, obj[key]) }// 2. Object.keys()用于返回對象所有key組成的數組 Object.keys(obj).forEach(key => {console.log(key, obj[key]) })// 3. Object.getOwnPropertyNames()用于返回對象所有key組成的數組 Object.getOwnPropertyNames(obj).forEach(key => {console.log(key, obj[key]) })// 4. Reflect.ownKeys()用于返回對象所有key組成的數組 Reflect.ownKeys(obj).forEach(key => {console.log(key, obj[key]) })

總結

以上是生活随笔為你收集整理的【ES6(2015)】Object对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。