对象方法(包含es6)
1.Object.assign(target,source1,source2,...)
方法主要用于對象的合并,將源對象source的所有可枚舉屬性合并到目標對象target上,此方法只拷貝源對象的自身屬性,不拷貝繼承的屬性。(從后向前覆蓋)
Object.assign方法實行的是淺拷貝,而不是深拷貝。也就是說,如果源對象某個屬性的值是對象,那么目標對象拷貝得到的是這個對象的引用。同名屬性會替換。
Object.assign只能進行值的復制,如果要復制的值是一個取值函數,那么將求值后再復制。
Object.assign可以用來處理數組,但是會把數組視為對象。
2.Object.create(prototype,[propertiesObject])
使用指定的原型對象及其屬性去創建一個新的對象
3.Object.defineProperties(obj,props)
通過多個描述符一次性定義多個屬性,接收兩個參數:要為之添加或修改屬性的對象和另一個描述符對象,其屬性與要添加過修改的屬性一 一對應。
const obj = {}Object.defineProperties(obj, {a_: {value: 1,writable: true},a: {get() {return a_},set(newValue) {console.log('set劫持')this.a_ = newValue}}})obj.a = 24.Object.defineProperty(obj,prop,descriptor)(詳細)
在一個對象上定義一個新屬性,或者修改一個對象的現有屬性, 并返回這個對象。
5.Object.keys(obj)
返回一個由一個給定對象的自身可枚舉屬性組成的數組,數組中屬性名的排列順序和使用 for...in 循環遍歷該對象時返回的順序一致 (兩者的主要區別是 一個 for-in 循環還會枚舉其原型鏈上的屬性)。
6.Object.values()
方法返回一個給定對象自己的所有可枚舉屬性值的數組,值的順序與使用for...in循環的順序相同 ( 區別在于 for-in 循環枚舉原型鏈中的屬性 )。
Object.values會過濾屬性名為 Symbol 值的屬性。
7.Object.entries()
返回一個給定對象自身可枚舉屬性的鍵值對數組,其排列與使用 for...in 循環遍歷該對象時返回的順序一致(區別在于 for-in 循環也枚舉原型鏈中的屬性)。
8.hasOwnProperty()
判斷對象自身屬性中是否具有指定的屬性。
9.Object.getOwnPropertyNames()
返回一個由指定對象的所有自身屬性的屬性名(包括不可枚舉屬性但不包括Symbol值作為名稱的屬性)組成的數組。
10.isPrototypeOf()
判斷一個對象是否存在于另一個對象的原型鏈上。
11.Object.setPrototypeOf(obj,prototype)
設置對象的原型對象
12.Object.is()
判斷兩個值是否相同。
如果下列任何一項成立,則兩個值相同:
13.Object.freeze()
凍結一個對象,凍結指的是不能向這個對象添加新的屬性,不能修改其已有屬性的值,不能刪除已有屬性,以及不能修改該對象已有屬性的可枚舉性、可配置性、可寫性。也就是說,這個對象永遠是不可變的。該方法返回被凍結的對象。
14.Objec t.isFrozen()
判斷一個對象是否被凍結 .
15.Object.preventExtensions()
對象不能再添加新的屬性。可修改,刪除現有屬性,不能添加新屬性。
16.Object.getOwnPropertyDescriptor()
取得指定屬性的屬性描述符,返回一個對象
兩個參數:所在的對象和要取得描述符的屬性名
16.Object.getOwnPropertyDescriptors()
這個方法實際會在每個自有屬性上調用Object.defineProperties()并在一個新對象中返回它們。?
一個參數:對象
總結
以上是生活随笔為你收集整理的对象方法(包含es6)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 创核股票是什么意思
- 下一篇: input失去焦点验证格式_vue2多文