es6 物件的擴充套件

2021-10-01 16:06:31 字數 3331 閱讀 2659

新的物件字面量特性:

01. 方法的定義: 可以簡寫,但使用箭頭函式要注意this指向

let

obj=

}obj

.show

()

02. 屬性的簡寫

let

name

='fang'

;let

obj=

03. 計算屬性名: 屬性名可以使用變數或者表示式

letc=

'name'

letd

='data'

letobj

=console

.log

(obj

.name

)console

.log

(obj

['data1'

])

新的物件方法:

object.is判斷兩個值是否相等 === 的改進(nan和+0-0)

// 特殊值nan

console

.log

(nan

===nan

)// 返回false

console

.log

(object.is

(nan

,nan))

// 返回true

// +0 -0 用於科學計算 精確精算

console

.log(+

0===-0

)// 返回true

console

.log

(object.is

(+0,

-0))

// 返回false

console

.log(1

/+0)// infinity 返回正無窮

console

.log(1

/-0)// -infinity 返回負無窮

工具方法: 判斷nan

function

iseq(a

,b)else

// }

// 簡寫if(

a!==a)

}console

.log

(iseq

(nan

,nan

))// 返回true

object.setprototypeof設定原型

let

obj=

letobj1

=object

.setprototypeof

(obj

,obj1

);// 把obj1設定為obj的原型

console

.log

(obj.c

)// 類似

// 第一種 __proto__ 內建屬性 不在es標準裡面 所以衍生出setprototypeof

// obj.__proto__ = obj1

// 第二種 新建乙個物件 並把obj作為原型

// let obj2 = object.create() // 新建乙個物件obj2 並把obj作為原型

// console.log(obj2.a)

// 缺點: 只有在建立的時候使用

object.assign合併方法

let

obj1

=let

obj2

=let

obj3

=object

.assign

(obj1

,obj2

,obj3

)// 第一是目標物件 後面的是被複製的物件

console

.log

(obj1

)// 注意事項:

// 1: 複製物件屬性 自身的可遍歷的屬性

// 不可以複製原型,只能複製本地屬性

// 不可以複製不能遍歷的屬性 enumerable: false

// 2: 複製是乙個物件乙個物件複製的

// 在複製中,如果被複製的物件中都有相同的屬性,前面的屬性會被後面的覆蓋

// 3: 複製的時候是淺拷貝,原物件改變,複製的也改變

// 使用場景:

// 1. 物件的複製 如果其中有乙個屬性的值是陣列或者物件的,則適合使用assign拷貝,應該使用深拷貝

// let obj =

// let obj1 = object.assign({}, obj);

// console.log(obj1)

// 2. 原型方法的新增 建構函式

function

person

()// 以前新增原型

// person.prototype.eat = function()

// 現在新增原型

object

.assign

(person

.prototype

,,walk

()})

// 3. 函式預設引數

const

defaults

=functionfn(

options

),defaults

,options

)// 如果傳空引數 此處使用object.assign合併}fn

()// 使用者只傳乙個或不傳引數也好使

物件的遍歷:

object.keys以陣列形式返回屬性名

object.values以陣列形式返回值

object.entries以陣列形式返回屬性名和值 二維陣列

let obj = 

// object.keys // 以陣列形式返回屬性名

console.log(object.keys(obj))

// object.values(es2017) // 以陣列形式返回值

console.log(object.values(obj))

// object.entries(es2017) // 以陣列形式返回屬性名和值 二維陣列

console.log(object.entries(obj))

ES6 物件擴充套件

es6 允許直接寫入變數和函式,作為物件的屬性和方法 var key1 1 var bj var bz 方法的簡寫 var ob fn2 表示式還可以用於定義方法名。var lastword last word var a a first word hello a lastword world a ...

ES6物件擴充套件

es6允許直接寫入變數和函式,作為屬性名和方法 var a b var c c 如果屬性值與屬性名一樣,我們值寫屬性名就可以 方法簡寫 add add function 定義物件屬性有兩種方法 obj.name lijixuan 2obj name lijixuan 我們原本只能用識別符號定義屬性,...

ES6 物件擴充套件

物件擴充套件主要從四個方面開展 1.簡潔表示法 2.屬性表示式 3.擴充套件運算子 4.object新增方法 let es6 console.log es5,es6 object object 在es5中,我們去定義物件,多使用鍵值對的方式來定義,在es6中,我們直接使用變數名稱來定義就可以了。是不...