js的object建構函式的新增API

2021-10-24 16:48:30 字數 1728 閱讀 9874

obeject是建構函式!!

1. object.is(a,b)

用於判斷兩個資料是否相等,基本上跟嚴格相等(===)是一致的,除了以下兩點:

(1) nan和nan相等

(2) +0和-0不相等

console.log(nan === nan); // false

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

console.log(object.is(nan, nan))// true

console.log(object.is(+0, -0))// false

2. object.assign():object.assign() 方法用於將所有可列舉屬性的值從乙個或多個源物件複製到目標物件。它將返回目標物件。

用於混合物件(混合成為乙個新的物件,有相同屬性就覆蓋,沒相同屬性就保留)

const obj1 = 

const obj2 =

//混合物件方法1:

//混合物件方法2:

const obj =

//使用object.assign()方法:

//將obj2的資料,覆蓋到obj1,並且會對obj1產生改動,然後返回obj1

const obj = object.assign(obj1, obj2);//obj2沒動,obj2覆蓋了obj1,obj1被改了,返回的這個obj===obj1,這樣不好

//使用巧妙的方式使用object.assign()來處理:

const obj = object.assign({}, obj1, obj2);//返回的是乙個新物件,不改動obj1了,完美

console.log(obj)

console.log(obj===obj1)

console.log(obj1)

console.log(obj2)

3. object.getownpropertynames() 的列舉順序:傳物件進去,返回乙個字串陣列,如[ 『a』 , 『b』 , 『c』 ]

object.getownpropertynames方法之前就存在,只不過,官方沒有明確要求,對屬性的順序如何排序,如何排序,完全由瀏覽器廠商決定。

es6規定了該方法返回的陣列的排序方式如下:

const obj = 

const props = object.getownpropertynames(obj)

console.log(props)

4. object.setprototypeof(obj1,obj2) : 修改obj1的原型物件為obj2

該函式用於設定某個物件的隱式原型;聖杯模式中完成繼承的時候可以用這個api;

比如: object.setprototypeof(obj1, obj2),

相當於: obj1.proto= obj2

const obj1 = 

const obj2 =

// obj1.__proto__ = obj2 想把obj1的原型改為obj2

object.setprototypeof(obj1, obj2)

console.log(obj1)

Object建構函式常用的方法

物件的合併 將源物件 source 的所有可列舉屬性複製到目標物件 object.assign target,source1,source2 如果目標物件與源物件有同名屬性,或多個源物件有同名屬性,則後面的屬性會覆蓋前面的。object.assign 拷貝的屬性是有限制的,只拷貝源物件的自身屬性 不...

JS的建構函式

建構函式 使自己的物件多次複製,同時例項根據設定的訪問等級可以訪問其內部的屬性和方法 當物件被例項化後,建構函式會立即執行它所包含的任何 function myobject msg 特權方法 公有方法 能被外部公開訪問,這個方法每次例項化都要重新構造而 prototype 是原型共享,所有例項化後,...

js中的建構函式

宣告建構函式 function demo args 建構函式中的this表示新建立的物件,建構函式自動返回this 建構函式的原型物件,能夠被所有例項繼承 demo.prototype.fn function let demo new demo demo.fn aabb console.log de...