摘要:方法可以獲取該屬性的描述對象。直接在一個對象上定義新的屬性或修改現(xiàn)有屬性,并返回該對象。運算符和運算符將數(shù)字值和視為相等,并認為不等于。如果沒有繼承屬性,則返回介紹一個常用操作符如果指定的屬性在指定的對象或其原型鏈中,則運算符返回語法
Object.assign()
對象的合并 將源對象(source)的所有可枚舉屬性復(fù)制到目標對象
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()創(chuàng)建一個新對象,使用現(xiàn)有的對象來提供新創(chuàng)建的對象的__proto__
Object.create(proto, [propertiesObject])
proto
新創(chuàng)建對象的原型對象。
propertiesObject
可選。如果沒有指定為 undefined,則是要添加到新創(chuàng)建對象的可枚舉屬性(即其自身定義的屬性,而不是其原型鏈上的枚舉屬性)對象的屬性描述符以及相應(yīng)的屬性名稱。這些屬性對應(yīng)Object.defindProperties()的第二個參數(shù)。
該方法直接在一個對象上定義一個新屬性,或者修改一個對象的現(xiàn)有屬性, 并返回這個對象。
Object.defineProperty(obj, prop, descriptor)
obj
要在其上定義屬性的對象。
prop
要定義或修改的屬性的名稱。
descriptor
將被定義或修改的屬性描述符。
Object.defineProperty(obj, "key", { enumerable: false, configurable: false, writable: false, value: "static" });Object.defineProperties()
直接在一個對象上定義新的屬性或修改現(xiàn)有屬性,并返回該對象。
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
兩個值是由相同個數(shù)的字符按照相同的順序組成的字符串
兩個值指向同一個對象
兩個值都是數(shù)字并且
- 都是正零 +0 - 都是負零 -0 - 都是 NaN - 都是除零和 NaN 外的其它同一個數(shù)字
這種相等性判斷邏輯和傳統(tǒng)的 == 運算符所用的不同,== 運算符會對它兩邊的操作數(shù)做隱式類型轉(zhuǎn)換(如果它們類型不同),然后才進行相等性比較,(所以才會有類似 "" == false 為 true 的現(xiàn)象),但 Object.is 不會做這種類型轉(zhuǎn)換。
這與===運算符也不一樣。===運算符(和==運算符)將數(shù)字值-0和+0視為相等,并認為Number.NaN不等于NaN。
Object.keys(),Object.values(),Object.entries()Object.keys():返回一個數(shù)組,成員是參數(shù)對象自身的(不含繼承的)所有可遍歷(enumerable)屬性的鍵名
Object.values:返回一個數(shù)組,成員是參數(shù)對象自身的(不含繼承的)所有可遍歷(enumerable)屬性的鍵值
Object.entries:返回一個數(shù)組,成員是參數(shù)對象自身的(不含繼承的)所有可遍歷(enumerable)屬性的鍵值對數(shù)組
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()
返回指定對象的原型(內(nèi)部[[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
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/108517.html
摘要:淺拷貝是按位拷貝對象,它會創(chuàng)建一個新對象,這個對象有著原始對象屬性值的一份精確拷貝。兩個對象引用都引用了同一個對象。對于字符串數(shù)字及布爾值來說不是或者對象,會拷貝這些值到新的數(shù)組里。 1、對象的理解 對象是一個包含相關(guān)數(shù)據(jù)和方法的集合(通常由一些變量和函數(shù)組成,我們稱之為對象里面的屬性和方法) 1.1 對象可以看成是Object對象構(gòu)造出來的 showImg(https://user...
摘要:常用繼承方式主要分為種原型鏈繼承構(gòu)造函數(shù)繼承組合繼承原型式繼承寄生式繼承寄生組合繼承以及繼承多個對象。所以說,構(gòu)造函數(shù)基礎(chǔ)只能繼承父類的實例屬性和方法,不能繼承原型鏈上的屬性和方法。 JavaScript常用繼承方式主要分為(7種):原型鏈繼承、構(gòu)造函數(shù)繼承、組合繼承、原型式繼承、寄生式繼承、寄生組合繼承以及繼承多個對象。 1:原型鏈繼承(核心:將父類的實例作為子類的原型) 基本概念:...
摘要:原型式繼承利用一個空對象作為中介,將某個對象直接賦值給空對象構(gòu)造函數(shù)的原型。其中表示構(gòu)造函數(shù),一個類中只能有一個構(gòu)造函數(shù),有多個會報出錯誤如果沒有顯式指定構(gòu)造方法,則會添加默認的方法,使用例子如下。 (關(guān)注福利,關(guān)注本公眾號回復(fù)[資料]領(lǐng)取優(yōu)質(zhì)前端視頻,包括Vue、React、Node源碼和實戰(zhàn)、面試指導(dǎo))showImg(https://segmentfault.com/img/rem...
摘要:常用的屬性和方法創(chuàng)建空創(chuàng)建給對象添加屬性給對象添加多個屬性給對象添加給對象添加返回屬性配置對象返回所有屬性名數(shù)組返回對象原型對象阻止對象擴展凍結(jié)對象密封對象檢測是否可擴展布爾值檢測是否凍結(jié)布爾值檢測是否密封布爾值對象原型對象對象實例的屬性和 常用Object的屬性和方法 創(chuàng)建空Object var o1 = {}; var o2 = Object.create(Object.prot...
閱讀 2009·2021-11-24 09:39
閱讀 1878·2019-08-30 15:55
閱讀 2167·2019-08-30 15:53
閱讀 565·2019-08-29 13:16
閱讀 983·2019-08-26 12:20
閱讀 2379·2019-08-26 11:58
閱讀 3128·2019-08-26 10:19
閱讀 3296·2019-08-23 18:31