ES6 物件 函式 陣列的擴充套件

2021-10-23 12:27:08 字數 4458 閱讀 9736

let name =

'tom'

;let age =12;

let obj =

}//等同於...

let obj =

}

let test =

'hello'

;let obj =

console.

log(obj)

//

function

test()

console.

log(test.name)

//test

let p =

}console.

log(p.test.name)

//test

console.

log(object.is(

10,10)

)//true

console.

log(+0

===-0)

//true

console.

log(object.is(

+0,-

0))//false

console.

log(

nan===

nan)

//false

console.

log(object.is(

nan,

nan)

)//true

let obj1 =

let obj2 =

let obj3 =

}let target =

object.

assign

(target,obj1,obj2,obj3)

console.

log(target)

//

object.assign方法實行的是淺拷貝,而不是深拷貝。也就是說,如果源物件某個屬性的值是物件,那麼目標物件拷貝得到的是這個物件的引用。

我們也可以自己定義乙個myassign()方法來實現物件的合併。

let obj1 =

let obj2 =

let obj3 =

}let target =

function

myassign

(target,

...temp)})

return target

}myassign

(target,obj1,obj2,obj3)

console.

log(target)

//

let obj =

console.

log(object.

keys

(obj)

)//[ 'name', 'age', 'gender' ]

console.

log(object.

values

(obj)

)//[ 'tom', 12, '男' ]

console.

log(object.

entries

(obj)

)//[ [ 'name', 'tom' ], [ 'age', 12 ], [ 'gender', '男' ] ]

function

log(x,y=

'world'

)log()

//undefined world 1

通常情況下,定義了預設值的引數,應該是函式的尾引數。函式的length屬性,將返回沒有指定預設值的引數個數。

function

foo(

)foo()

// undefined 5

foo(

)// 1 5

foo(

)// 1 2

let

test

=(a,b)

=>console.

log(a+b)

//等價於...

lettest

=function

(a,b)

test(1

,2)//3

箭頭函式裡面沒有自己的this,而是引用外層的this。

let obj =

}//呼叫物件中的方法

obj.

sayname()

//let obj =

obj.

sayname()

//{}

箭頭函式不能用於建構函式,沒有內部屬性arguments。

let

test

=function()

test()

//[arguments] {}

lettest=(

)=>

test

()

let arr =[1

,2,3

]console.

log(

...arr)

//1 2 3

console.

log(

...'hello'

)//h e l l o

console.

log(

[...

'hello'])

//[ 'h', 'e', 'l', 'l', 'o' ]

let obj =

console.

log(array.

from

(obj)

)//[ 'hello', 'world', 'nice' ]

console.

log(array.

from

('hello'))

//[ 'h', 'e', 'l', 'l', 'o' ]

console.

log(array.of(

1,2,

3,4)

)//[ 1, 2, 3, 4 ]

console.

log(array.of(

true

,false

,true))

//[ true, false, true ]

console.

log(array.of(

'hello'

,'world'

,'nice'))

//[ 'hello', 'world', 'nice' ]

array.of()方法的主要目的,是彌補陣列建構函式array()的不足——因為引數個數的不同,會導致array()的行為有差異。

let arr =[12

,3,2

,4,56

,7]let res = arr.

find

((item,index,arr)

=>

)console.

log(res)

//3

let arr =[12

,3,2

,4,56

,7]let res = arr.

findindex

((item,index,arr)

=>

)console.

log(res)

//1

let arr =

arr.length =

5let res = arr.

fill(10

) console.

log(res)

//[10, 10, 10, 10, 10]

let arr =[12

,42,3

,43,56

,4]let keys = arr.

keys()

let values = arr.

values()

let entries = arr.

entries()

for(

let key of keys)

for(

let value of values)

for(

let[key,value]

of entries)

let arr =[1

,2,3

,4]let res = arr.

includes(5

)console.

log(res)

//false

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中,我們直接使用變數名稱來定義就可以了。是不...