摘要:文中的多為構(gòu)造函數(shù)原型對象屬性為函數(shù)的專屬屬性,表示函數(shù)的原型對象。關(guān)于各種數(shù)據(jù)類型的屬性的展示對象的構(gòu)造器函數(shù)該屬性指向創(chuàng)建該對象原型的構(gòu)造函數(shù)。對對象的凍結(jié)狀態(tài)的設(shè)置和判斷,前者讓凍結(jié)對象,后者判斷對象是否被凍結(jié)。
前言
上篇文章介紹了JS的對象,本文將介紹Object這個基類,主要介紹其屬性和方法(其實(shí)這些在MDN里都有^_^,點(diǎn)擊這里可以直通MDN)。好了廢話不多說了,直接開始。文中的Object多為構(gòu)造函數(shù)Object
原型對象Object.prototype
prototype屬性為函數(shù)的專屬屬性,表示函數(shù)的原型對象。該屬性表示Object對象的原型對象,此處的Objcet為構(gòu)造函數(shù)Object而不是對象實(shí)例。下圖可以證明。
Object.prototype.__proto__
該屬性為訪問器屬性,即為有g(shù)et和set函數(shù)的屬性,可以直接賦值。若有對象實(shí)例obj則可直接訪問該屬性obj.__proto__。
Object.getPrototypeOf(obj)
該方法獲得對象實(shí)例obj的原型對象。獲得的對象與對象的__proto__屬性的值相同。
Object.setPrototypeOf(obj, prototype)
該方法是將prototype對象設(shè)為obj對象的原型對象。該方法是ES6的標(biāo)準(zhǔn)。
prototypeObject.isPrototypeOf(obj)
該方法判斷prototypeObject對象是否在obj對象的原型鏈上。
關(guān)于各種數(shù)據(jù)類型的prototype屬性的展示
Object.prototype.constructor
該屬性指向創(chuàng)建該對象原型的構(gòu)造函數(shù)。其返回為一個具體的函數(shù)而不是引用或?qū)ο蟆?/p>
Object.defineProperty(obj,prop,desc)、Object.defineProperties(obj, {prop1:desc1, prop2:desc2})
上面兩個方法都是給對象obj添加或修改自身屬性,前者只能操作一個屬性,或者可以操作多個屬性。其參數(shù)中prop為屬性名,desc為屬性描述符。兩個方法都返回改變后的對象obj。
Object.getOwnPropertyNames(obj)
該方法獲得對象obj的所有自身屬性的屬性名組成的數(shù)組(包括不可枚舉屬性)。數(shù)組中元素的排列順序未知(以我自己有限的幾個例子看,應(yīng)該是按定義的先后順序排列)。
Object.getOwnPropertyDescriptor(obj, prop)、Object.getOwnPropertyDescriptors(obj)
兩個方法都是獲取對象obj的自身屬性的屬性描述符,前者只是取得某個屬性的描述符,后者獲取整個對象的所有自身屬性的描述符。
Object.entries(obj)
該方法返回對象自身屬性中所有可枚舉的屬性的鍵值對(屬性名:值)組成的數(shù)組。
Object.keys(obj)
該方法與上面的方法相似,也是遍歷對象中的可枚舉屬性,只是此方法返回的是對象中可枚舉的自身屬性的屬性名組成的數(shù)組。
Object.getOwnPropertySymblos(obj)
該方法會返回一個數(shù)組,該數(shù)組包含了指定對象自身的(非繼承的)所有 symbol 屬性鍵。(此方法為ES6規(guī)范)
Object.prototype.propertyIsEnumerable(prop)(obj.propertyIsEnumerable(prop))
判斷屬性prop是否是對象obj的可枚舉的自身屬性。
Object.prototype.hadsOwnProperty(prop)(obj.hadsOwnProperty(prop))
判斷obj對象是否含有prop自身屬性。
Object.assign(target, ...sources)
該方法可以把任意多個的源對象自身的可枚舉屬性拷貝給目標(biāo)對象,然后返回目標(biāo)對象。
Object.create(prototype, [ propertiesObject ])
該方法創(chuàng)建一個擁有指定原型和若干個指定屬性的對象。
Object.preventExtensions(obj)、"Object.isExtensible(obj)"
對對象的可擴(kuò)展?fàn)顟B(tài)設(shè)置和判斷,對象默認(rèn)可擴(kuò)展。前者是讓obj對象變得不可擴(kuò)展。后者是判斷obj對象是否能夠擴(kuò)展。
Object.seal(obj)`Object.isSealed(obj)`
對對象的密封狀態(tài)的設(shè)置和判斷。前者讓obj對象密封,后者判斷obj對象是否被密封。密封對象是指那些不能添加新的屬性,不能刪除已有屬性,以及不能修改已有屬性的可枚舉性、可配置性、可寫性,但可能可以修改已有屬性的值的對象。
Object.freeze(obj)、Object.isFrozen(obj)
對對象的凍結(jié)狀態(tài)的設(shè)置和判斷,前者讓凍結(jié)obj對象,后者判斷對象obj是否被凍結(jié)。凍結(jié)指的是不能向這個對象添加新的屬性,不能修改其已有屬性的值,不能刪除已有屬性,以及不能修改該對象已有屬性的可枚舉性、可配置性、可寫性。也就是說,這個對象永遠(yuǎn)是不可變的。該方法返回被凍結(jié)的對象。
Object.is(value1, value2)
該方法為同值判斷,即判斷value1和value2是否為同一個值,與===號不同的是,該方法會將兩個NaN判斷為同一個值,而+0和-0為不同的值。
Object.prototype.toLocalString()、Object.prototype.toString()
返回一個表示該對象的字符串。toLocaleString()方法主要用于被本地化相關(guān)對象覆蓋。覆蓋了該方法的對象有Array、Number、Date。toString()方法可以用來檢測對象類型。其用法為Object.prototype.toString.call(obj),其返回值的格式為[object ObjectName]。
Object.prototype.valueOf()
該方法返回對象的原始值。這個方法用的不多,大多數(shù)情況下JS會自動調(diào)用此函數(shù),另外一些就是其他對象重寫了此函數(shù)的情況。
本人初學(xué)JS,內(nèi)容基本上從MDN上搬過來的自己的理解不是很多,再加上初中作文湊不齊600字的語文水平(-_-|)……
本文內(nèi)容如有錯漏,望請指正,不勝感激!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/81197.html
摘要:本次主要分享關(guān)于上一篇區(qū)域的學(xué)習(xí)。區(qū)域?yàn)榈暮诵牟糠郑慕Y(jié)構(gòu)如下為了便于梳理思路,以上代碼省略了細(xì)節(jié),只保留了輪廓脈絡(luò)。最終暴露給開發(fā)者的如下圖所示這里只分析了區(qū)域的結(jié)構(gòu),下一次會深入到函數(shù)語句粒度。 本次主要分享關(guān)于上一篇區(qū)域2的學(xué)習(xí)。區(qū)域2為Zepto的核心部分,它的結(jié)構(gòu)如下 var Zepto = (function() { var $, zepto = {}; fu...
摘要:繼承是面向?qū)ο缶幊陶Z言中的一個重要的概念,繼承可以使得子類具有父類的屬性和方法或者重新定義追加屬性和方法等。但是在中沒有類的概念,是基于原型的語言,所以這就意味著對象可以直接從其他對象繼承。 繼承是面向?qū)ο缶幊陶Z言中的一個重要的概念,繼承可以使得子類具有父類的屬性和方法或者重新定義、追加屬性和方法等。但是在Javascript中沒有類的概念,是基于原型的語言,所以這就意味著對象可以直接...
摘要:對象篇簡介本身就是一個函數(shù),可用于工具函數(shù),也可以是用于構(gòu)造對象的函數(shù)其次可以添加屬性和方法方法又可以分為靜態(tài)方法定義在自身上的和實(shí)例方法定義在原型上的工具函數(shù)作為工具函數(shù)參數(shù)可以是任意數(shù)據(jù)類型,將其轉(zhuǎn)為對象如果參數(shù)是空,,則將其轉(zhuǎn)換為空對 對象篇 Object簡介 Object本身就是一個函數(shù),可用于工具函數(shù),也可以是用于構(gòu)造對象的函數(shù);其次Object可以添加屬性和方法;方法又可以...
摘要:命令作用作用是執(zhí)行構(gòu)造函數(shù),返回實(shí)例對象上面例子是自定義一個構(gòu)造函數(shù),其最大的特點(diǎn)就是首字母大寫,用執(zhí)行構(gòu)造函數(shù)其中,在的執(zhí)行下,代表了實(shí)例化后的對象,這個也就有屬性注意點(diǎn)如果不用執(zhí)行構(gòu)造函數(shù),那么指向的是全局有兩種方式可以避免內(nèi)部定義嚴(yán)格 new命令 new作用 作用是執(zhí)行構(gòu)造函數(shù),返回實(shí)例對象 function F() { this.name = object } var ...
摘要:搬家篇三開胃菜因?yàn)榇笥诘扔诘谋容^,不是相等的比較,所以值得注意的操作符一元操作符通過進(jìn)行轉(zhuǎn)換其中包括號運(yùn)算符,號運(yùn)算符,都是經(jīng)轉(zhuǎn)換邏輯運(yùn)算符等價(jià)于將操作數(shù)進(jìn)行布爾值類型轉(zhuǎn)換位操作當(dāng)一邊操作數(shù)為時(shí),可等價(jià)于操作數(shù)為由以下變化可以證得加號運(yùn)算 搬家篇三 開胃菜 [] == ![] //true ==> == false 123 ^ [] ...
閱讀 2323·2023-04-26 00:28
閱讀 3067·2019-08-30 15:55
閱讀 2742·2019-08-30 12:47
閱讀 1550·2019-08-29 11:04
閱讀 3150·2019-08-28 18:14
閱讀 945·2019-08-28 18:11
閱讀 1671·2019-08-26 18:36
閱讀 3383·2019-08-23 18:21