JavaScript--Object屬性及方法整理

Object

  • Object.assign() 將所有可枚舉屬性的值從一個或多個源對象復制到目標對象踢关。它將返回目標對象祝拯。

    Object.assign(target, ...sources)
    target: 目標對象
    sources: 源對象
    Object.assign 不會在那些source對象值為 null 或 undefined 的時候拋出錯誤
    繼承屬性和不可枚舉屬性不能拷貝
    原始類型會被包裝成對象
    異常會打斷后續(xù)拷貝任務
    
  • Object.create() 方法創(chuàng)建一個新對象鲤屡,使用現(xiàn)有的對象來提供新創(chuàng)建的對象的__proto__ 返回值: 新對象

    Object.create(proto[, propertiesObject])
    proto
    新創(chuàng)建對象的原型對象。
    propertiesObject
    可選申眼。如果沒有指定為 undefined股囊,則是要添加到新創(chuàng)建對象的可枚舉屬性(即其自身定義的屬性涣狗,而不是其原型鏈上的枚舉屬性)對象的屬性描述符以及相應的屬性名稱谍婉。這些屬性對應Object.defineProperties()的第二個參數(shù)。
    
    如果propertiesObject參數(shù)是 null 或非原始包裝對象屑柔,則拋出一個 TypeError 異常
    
    
  • Object.defineProperties() 直接在一個對象上定義新的屬性或修改現(xiàn)有屬性,并返回該對象

    Object.defineProperties(obj, props)
    
    obj
    在其上定義或修改屬性的對象。
    props
    要定義其可枚舉屬性或修改的屬性描述符的對象珍剑。對象中存在的屬性描述符主要有兩種:數(shù)據(jù)描述符和訪問器描述符掸宛。描述符具有以下鍵:
        1.configurable
            true 當且僅當該屬性描述符的類型可以被改變并且該屬性可以從對應對象中刪除。
            默認為 false
        2.enumerable
            true 當且僅當在枚舉相應對象上的屬性時該屬性顯現(xiàn)招拙。
            默認為 false
      3.value
            與屬性關(guān)聯(lián)的值唧瘾〈胍耄可以是任何有效的JavaScript值(數(shù)字,對象饰序,函數(shù)等)领虹。
            默認為 undefined.
        4.writable
            true當且僅當與該屬性相關(guān)聯(lián)的值可以用assignment operator改變時。
            默認為 false
        5.get
            作為該屬性的 getter 函數(shù)求豫,如果沒有 getter 則為undefined塌衰。函數(shù)返回值將被用作屬性的值。
            默認為 undefined
        6.set
            作為屬性的 setter 函數(shù)蝠嘉,如果沒有 setter 則為undefined最疆。函數(shù)將僅接受參數(shù)賦值給該屬性的新值。
            默認為 undefined
    
  • Object.defineProperty() 方法會直接在一個對象上定義一個新屬性蚤告,或者修改一個對象的現(xiàn)有屬性努酸, 并返回這個對象。

    Object.defineProperty(obj, prop, descriptor)
    obj
      要在其上定義屬性的對象杜恰。
    prop
      要定義或修改的屬性的名稱获诈。
    descriptor
      將被定義或修改的屬性描述符。
    
  • Object.entries()方法返回一個給定對象自身可枚舉屬性的鍵值對數(shù)組心褐,其排列與使用 for...in循環(huán)遍歷該對象時返回的順序一致(區(qū)別在于 for-in 循環(huán)也枚舉原型鏈中的屬性)舔涎。

    Object.entries(obj)
    
    obj
    可以返回其可枚舉屬性的鍵值對的對象。
    返回值
    給定對象自身可枚舉屬性的鍵值對數(shù)組檬寂。
    
  • Object.freeze() 方法可以凍結(jié)一個對象终抽。一個被凍結(jié)的對象再也不能被修改;凍結(jié)了一個對象則不能向這個對象添加新的屬性桶至,不能刪除已有屬性昼伴,不能修改該對象已有屬性的可枚舉性、可配置性镣屹、可寫性圃郊,以及不能修改已有屬性的值。此外女蜈,凍結(jié)一個對象后該對象的原型也不能被修改持舆。freeze() 返回和傳入的參數(shù)相同的對象。

    Object.freeze(obj)
    
    obj
    要被凍結(jié)的對象伪窖。
    返回值
    被凍結(jié)的對象
    
  • Object.fromEntries() 方法把鍵值對列表轉(zhuǎn)換為一個對象逸寓。

    Object.fromEntries(iterable)
    
    iterable
    可迭代對象,類似 Array 覆山、 Map 或者其它實現(xiàn)了可迭代協(xié)議的對象
    返回值
    一個由該迭代對象條目提供對應屬性的新對象
    
  • Object.getOwnPropertyDescriptor() 方法返回指定對象上一個自有屬性對應的屬性描述符竹伸。(自有屬性指的是直接賦予該對象的屬性,不需要從原型鏈上進行查找的屬性)

    Object.getOwnPropertyDescriptor(obj, prop)
    
    obj
    需要查找的目標對象
    prop
    目標對象內(nèi)屬性名稱
    返回值
    如果指定的屬性存在于對象上簇宽,則返回其屬性描述符對象(property descriptor)勋篓,否則返回 undefined
    
  • Object.getOwnPropertyNames()方法返回一個由指定對象的所有自身屬性的屬性名(包括不可枚舉屬性但不包括Symbol值作為名稱的屬性)組成的數(shù)組吧享。

    Object.getOwnPropertyNames(obj)
    
    obj
    一個對象,其自身的可枚舉和不可枚舉屬性的名稱被返回
    返回值
    在給定對象上找到的自身屬性對應的字符串數(shù)組
    
  • Object.getOwnPropertySymbols() 方法返回一個給定對象自身的所有 Symbol 屬性的數(shù)組

    Object.getOwnPropertySymbols(obj)
    
    obj
    要返回 Symbol 屬性的對象
    
  • Object.getPrototypeOf() 方法返回指定對象的原型

    Object.getPrototypeOf(object)
    
    obj
    要返回其原型的對象
    返回值
    給定對象的原型譬嚣。如果沒有繼承屬性钢颂,則返回 null
    
  • Object.is() 方法判斷兩個值是否是相同的值

    Object.is(value1, value2)
    
    value1
    第一個需要比較的值
    value2
    第二個需要比較的值
    返回值
    Boolean
    
    Object.is() 判斷兩個值是否相同。如果下列任何一項成立拜银,則兩個值相同:
        兩個值都是 undefined
        兩個值都是 null
        兩個值都是 true 或者都是 false
        兩個值是由相同個數(shù)的字符按照相同的順序組成的字符串
        兩個值指向同一個對象
        兩個值都是數(shù)字并且
        都是正零 +0
        都是負零 -0
        都是 NaN
        都是除零和 NaN 外的其它同一個數(shù)字
    === 運算符(和== 運算符)將數(shù)字值 -0 和 +0 視為相等殊鞭,并認為 Number.NaN 不等于 NaN
    object.is()不做隱式轉(zhuǎn)換
    
  • Object.isExtensible() 方法判斷一個對象是否是可擴展的(是否可以在它上面添加新的屬性)

    Object.isExtensible(obj)
    
    obj
    需要檢測的對象
    返回值
    Boolean  密封對象是不可擴展的   凍結(jié)對象也是不可擴展
    
  • Object.isFrozen()方法判斷一個對象是否被凍結(jié)

    Object.isFrozen(obj)
    
    一個不可擴展的空對象同時也是一個凍結(jié)對象
    一個不可擴展的對象,擁有一個不可寫但可配置的屬性,則它仍然是非凍結(jié)的
    一個不可擴展的對象,擁有一個不可配置但可寫的屬性,則它仍然是非凍結(jié)的
    一個不可擴展的對象,值擁有一個訪問器屬性,則它仍然是非凍結(jié)的
    一個凍結(jié)對象也是一個密封對象,更是一個不可擴展的對象
    
  • Object.isSealed() 方法判斷一個對象是否被密封

    Object.isSealed(obj)
    
    把一個空對象變的不可擴展,則它同時也會變成個密封對象
    如果這個對象不是空對象,則它不會變成密封對象,因為密封對象的所有自身屬性必須是不可配置的
    
  • Object.keys() 方法會返回一個由一個給定對象的自身可枚舉屬性組成的數(shù)組,數(shù)組中屬性名的排列順序和使用 for...in 循環(huán)遍歷該對象時返回的順序一致 盐股。如果對象的鍵-值都不可枚舉钱豁,那么將返回由鍵組成的數(shù)組

    Object.keys(obj)
    
    obj
    要返回其枚舉自身屬性的對象
    返回值
    一個表示給定對象的所有可枚舉屬性的字符串數(shù)組
    
  • Object.preventExtensions()方法讓一個對象變的不可擴展,也就是永遠不能再添加新的屬性

    Object.preventExtensions(obj)
    
    obj
    將要變得不可擴展的對象
    返回值
    已經(jīng)不可擴展的對象
    
  • hasOwnProperty() 方法會返回一個布爾值疯汁,指示對象自身屬性中是否具有指定的屬性(也就是是否有指定的鍵)

    obj.hasOwnProperty(prop)
    
    prop
    要檢測的屬性  字符串 名稱或者 Symbol
    返回值
    Boolean
    所有繼承了 Object 的對象都會繼承到 hasOwnProperty 方法牲尺。這個方法可以用來檢測一個對象是否含有特定的自身屬性;和 in 運算符不同幌蚊,該方法會忽略掉那些從原型鏈上繼承到的屬性
    
  • isPrototypeOf() 方法用于測試一個對象是否存在于另一個對象的原型鏈上

    ? isPrototypeOf()instanceof 運算符不同谤碳。在表達式 "object instanceof AFunction"中,object 的原型鏈是針對 AFunction.prototype 進行檢查的溢豆,而不是針對 AFunction 本身

    prototypeObj.isPrototypeOf(object)
    
    object
    在該對象的原型鏈上搜尋
    返回值
    Boolean
    
  • propertyIsEnumerable() 方法返回一個布爾值蜒简,表示指定的屬性是否可枚舉

    obj.propertyIsEnumerable(prop)
    
    prop
    需要測試的屬性名
    
    每個對象都有一個propertyIsEnumerable方法。此方法可以確定對象中指定的屬性是否可以被for...in循環(huán)枚舉漩仙,但是通過原型鏈繼承的屬性除外搓茬。如果對象沒有指定的屬性,則此方法返回false
    
  • toLocaleString() 方法返回一個該對象的字符串表示队他。此方法被用于派生對象為了特定語言環(huán)境的目的(locale-specific purposes)而重載使用

    obj.toLocaleString()
    
    Object toLocaleString 返回調(diào)用 toString() 的結(jié)果卷仑。
    該函數(shù)提供給對象一個通用的toLocaleString 方法,不是全部都可以使用它麸折。
    
    Array:Array.prototype.toLocaleString()
    Number:Number.prototype.toLocaleString()
    Date:Date.prototype.toLocaleString()
    
  • toString() 方法返回一個表示該對象的字符串

    object.toString()
    
    每個對象都有一個toString()方法坠韩,當該對象被表示為一個文本值時悯衬,或者一個對象以預期的字符串方式引用時自動調(diào)用倾剿。默認情況下艘刚,toString()方法被每個Object對象繼承。如果此方法在自定義對象中未被覆蓋芭析,toString() 返回 "[object type]"锚扎,其中type是對象的類型
    
    toString()調(diào)用 null返回[object Null],undefined 返回[object Undefined]
    
  • valueOf() 方法返回指定對象的原始值

    object.valueOf()
    
    不同類型對象的valueOf()方法的返回值
    Array 返回數(shù)組對象本身馁启。
    Boolean   布爾值驾孔。
    Date  存儲的時間是從 1970 年 1 月 1 日午夜開始計的毫秒數(shù) UTC。
    Function  函數(shù)本身。
    Number    數(shù)字值助币。
    Object    對象本身。這是默認情況螟碎。
    String    字符串值眉菱。
    Math 和 Error 對象沒有 valueOf 方法。
    
  • Object.seal()方法封閉一個對象掉分,阻止添加新屬性并將所有現(xiàn)有屬性標記為不可配置俭缓。當前屬性的值只要可寫就可以改變

    Object.seal(obj)
    
    通常,一個對象是可擴展的(可以添加新的屬性)酥郭。密封一個對象會讓這個對象變的不能添加新屬性华坦,且所有已有屬性會變的不可配置。屬性不可配置的效果就是屬性變的不可刪除不从,以及一個數(shù)據(jù)屬性不能被重新定義成為訪問器屬性惜姐,或者反之。但屬性的值仍然可以修改椿息。嘗試刪除一個密封對象的屬性或者將某個密封對象的屬性從數(shù)據(jù)屬性轉(zhuǎn)換成訪問器屬性歹袁,結(jié)果會靜默失敗或拋出TypeError
    
  • Object.setPrototypeOf() 方法設置一個指定的對象的原型 ( 即, 內(nèi)部[[Prototype]]屬性)到另一個對象或 null

    Object.setPrototypeOf(obj, prototype)
    
    obj
    要設置其原型的對象。.
    prototype
    該對象的新原型(一個對象 或 null).
    
  • Object.values()方法返回一個給定對象自身的所有可枚舉屬性值的數(shù)組寝优,值的順序與使用for...in循環(huán)的順序相同 ( 區(qū)別在于 for-in 循環(huán)枚舉原型鏈中的屬性 )

    Object.values(obj)
    
    Object.values()返回一個數(shù)組条舔,其元素是在對象上找到的可枚舉屬性值。屬性的順序與通過手動循環(huán)對象的屬性值所給出的順序相同
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末乏矾,一起剝皮案震驚了整個濱河市孟抗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钻心,老刑警劉巖凄硼,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異扔役,居然都是意外死亡帆喇,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門亿胸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坯钦,“玉大人,你說我怎么就攤上這事侈玄⊥竦叮” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵序仙,是天一觀的道長突颊。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么律秃? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任爬橡,我火速辦了婚禮,結(jié)果婚禮上棒动,老公的妹妹穿的比我還像新娘糙申。我一直安慰自己,他們只是感情好船惨,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布柜裸。 她就那樣靜靜地躺著,像睡著了一般粱锐。 火紅的嫁衣襯著肌膚如雪疙挺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天怜浅,我揣著相機與錄音铐然,去河邊找鬼。 笑死恶座,一個胖子當著我的面吹牛锦爵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播奥裸,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼险掀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了湾宙?” 一聲冷哼從身側(cè)響起樟氢,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侠鳄,沒想到半個月后埠啃,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡伟恶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年碴开,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片博秫。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡潦牛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出挡育,到底是詐尸還是另有隱情巴碗,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布即寒,位于F島的核電站橡淆,受9級特大地震影響召噩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜逸爵,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一具滴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧师倔,春花似錦抵蚊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谷醉。三九已至致稀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間俱尼,已是汗流浹背抖单。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留遇八,地道東北人矛绘。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像刃永,于是被迫代替她去往敵國和親货矮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容