新的物件字面量特性:
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中,我們直接使用變數名稱來定義就可以了。是不...