摘要:方法可以獲取該屬性的描述對象。直接在一個對象上定義新的屬性或修改現有屬性,并返回該對象。運算符和運算符將數字值和視為相等,并認為不等于。如果沒有繼承屬性,則返回介紹一個常用操作符如果指定的屬性在指定的對象或其原型鏈中,則運算符返回語法
Object.assign()
對象的合并 將源對象(source)的所有可枚舉屬性復制到目標對象
Object.assign(target, source1, source2)
如果目標對象與源對象有同名屬性,或多個源對象有同名屬性,則后面的屬性會覆蓋前面的。Object.assign()拷貝的屬性是有限制的,只拷貝源對象的自身屬性(不拷貝繼承屬性),也不拷貝不可枚舉屬性。
插播一段知識點:
對象的每個屬性都有一個描述對象(Descriptor),用來控制該屬性的行為。Object.getOwnPropertyDescriptor方法可以獲取該屬性的描述對象。
let obj = { foo: 123 }; Object.getOwnPropertyDescriptor(obj, "foo") // { // value: 123, // writable: true, // enumerable: true, // configurable: true // }
value:屬性值
wirtable: 可寫性(是否可以修改(賦值))
enumerable:可枚舉屬性(是否可以被遍歷到)
configurable:可配置屬性(是否可以被刪除)
Object.create()創建一個新對象,使用現有的對象來提供新創建的對象的__proto__
Object.create(proto, [propertiesObject])
proto
新創建對象的原型對象。
propertiesObject
可選。如果沒有指定為 undefined,則是要添加到新創建對象的可枚舉屬性(即其自身定義的屬性,而不是其原型鏈上的枚舉屬性)對象的屬性描述符以及相應的屬性名稱。這些屬性對應Object.defindProperties()的第二個參數。
該方法直接在一個對象上定義一個新屬性,或者修改一個對象的現有屬性, 并返回這個對象。
Object.defineProperty(obj, prop, descriptor)
obj
要在其上定義屬性的對象。
prop
要定義或修改的屬性的名稱。
descriptor
將被定義或修改的屬性描述符。
Object.defineProperty(obj, "key", { enumerable: false, configurable: false, writable: false, value: "static" });Object.defineProperties()
直接在一個對象上定義新的屬性或修改現有屬性,并返回該對象。
Object.defineProperties(obj, props)
var obj = {}; Object.defineProperties(obj, { "property1": { value: true, writable: true }, "property2": { value: "Hello", writable: false } // etc. etc. });Object.is()
Object.is() 判斷兩個值是否相同。如果下列任何一項成立,則兩個值相同:
兩個值都是 undefined
兩個值都是 null
兩個值都是 true 或者都是 false
兩個值是由相同個數的字符按照相同的順序組成的字符串
兩個值指向同一個對象
兩個值都是數字并且
- 都是正零 +0 - 都是負零 -0 - 都是 NaN - 都是除零和 NaN 外的其它同一個數字
這種相等性判斷邏輯和傳統的 == 運算符所用的不同,== 運算符會對它兩邊的操作數做隱式類型轉換(如果它們類型不同),然后才進行相等性比較,(所以才會有類似 "" == false 為 true 的現象),但 Object.is 不會做這種類型轉換。
這與===運算符也不一樣。===運算符(和==運算符)將數字值-0和+0視為相等,并認為Number.NaN不等于NaN。
Object.keys(),Object.values(),Object.entries()Object.keys():返回一個數組,成員是參數對象自身的(不含繼承的)所有可遍歷(enumerable)屬性的鍵名
Object.values:返回一個數組,成員是參數對象自身的(不含繼承的)所有可遍歷(enumerable)屬性的鍵值
Object.entries:返回一個數組,成員是參數對象自身的(不含繼承的)所有可遍歷(enumerable)屬性的鍵值對數組
let {keys, values, entries} = Object; let obj = { a: 1, b: 2, c: 3 }; for (let key of keys(obj)) { console.log(key); // "a", "b", "c" } for (let value of values(obj)) { console.log(value); // 1, 2, 3 } for (let [key, value] of entries(obj)) { console.log([key, value]); // ["a", 1], ["b", 2], ["c", 3] }Object.getPrototypeOf()
返回指定對象的原型(內部[[Prototype]]屬性的值)。
語法:
Object.getPrototypeOf(object)
object:要返回其原型的對象。
返回值:給定對象的原型。如果沒有繼承屬性,則返回 null
const prototype1 = {}; const object1 = Object.create(prototype1); console.log(Object.getPrototypeOf(object1) === prototype1); // expected output: true
介紹一個常用操作符 in
如果指定的屬性在指定的對象或其原型鏈中,則in 運算符返回true
語法:
prop in object
var obj ={ a: 1 } console.log("a" in obj); // true console.log("b" in obj); // false
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/108517.html
摘要:淺拷貝是按位拷貝對象,它會創建一個新對象,這個對象有著原始對象屬性值的一份精確拷貝。兩個對象引用都引用了同一個對象。對于字符串數字及布爾值來說不是或者對象,會拷貝這些值到新的數組里。 1、對象的理解 對象是一個包含相關數據和方法的集合(通常由一些變量和函數組成,我們稱之為對象里面的屬性和方法) 1.1 對象可以看成是Object對象構造出來的 showImg(https://user...
摘要:常用繼承方式主要分為種原型鏈繼承構造函數繼承組合繼承原型式繼承寄生式繼承寄生組合繼承以及繼承多個對象。所以說,構造函數基礎只能繼承父類的實例屬性和方法,不能繼承原型鏈上的屬性和方法。 JavaScript常用繼承方式主要分為(7種):原型鏈繼承、構造函數繼承、組合繼承、原型式繼承、寄生式繼承、寄生組合繼承以及繼承多個對象。 1:原型鏈繼承(核心:將父類的實例作為子類的原型) 基本概念:...
摘要:原型式繼承利用一個空對象作為中介,將某個對象直接賦值給空對象構造函數的原型。其中表示構造函數,一個類中只能有一個構造函數,有多個會報出錯誤如果沒有顯式指定構造方法,則會添加默認的方法,使用例子如下。 (關注福利,關注本公眾號回復[資料]領取優質前端視頻,包括Vue、React、Node源碼和實戰、面試指導)showImg(https://segmentfault.com/img/rem...
摘要:常用的屬性和方法創建空創建給對象添加屬性給對象添加多個屬性給對象添加給對象添加返回屬性配置對象返回所有屬性名數組返回對象原型對象阻止對象擴展凍結對象密封對象檢測是否可擴展布爾值檢測是否凍結布爾值檢測是否密封布爾值對象原型對象對象實例的屬性和 常用Object的屬性和方法 創建空Object var o1 = {}; var o2 = Object.create(Object.prot...
閱讀 2019·2021-11-24 09:39
閱讀 1882·2019-08-30 15:55
閱讀 2175·2019-08-30 15:53
閱讀 572·2019-08-29 13:16
閱讀 990·2019-08-26 12:20
閱讀 2387·2019-08-26 11:58
閱讀 3151·2019-08-26 10:19
閱讀 3309·2019-08-23 18:31