摘要:前言原生提供對(duì)象的所有其他對(duì)象都繼承自對(duì)象,即這些對(duì)象都是的實(shí)例對(duì)象的原生方法分為兩類本身的方法的實(shí)例方法對(duì)象本身的方法直接定義在對(duì)象的方法方法就是直接定義在對(duì)象上的實(shí)例方法定義在原型對(duì)象上的方法,可以被實(shí)例直接使用定義了一個(gè)方法,然后生成
前言
JavaScript原生提供Object對(duì)象
JavaScript的所有其他對(duì)象都繼承自O(shè)bject對(duì)象,即這些對(duì)象都是Object的實(shí)例
Object對(duì)象的原生方法分為兩類:Object本身的方法、Object的實(shí)例方法
Object對(duì)象本身的方法直接定義在Object對(duì)象的方法
Object.print = function (o) { console.log(o); }
print方法就是直接定義在Object對(duì)象上
Object的實(shí)例方法定義在Object原型對(duì)象Object.prototype上的方法,可以被Object實(shí)例直接使用
Object.prototype.print = function () { console.log(this); }; var obj = new Object(); obj.print() // Object
Object.prototype定義了一個(gè)print方法,然后生成一個(gè)Object的實(shí)例obj,obj直接繼承了Object.prototype的屬性和方法,所以可以直接使用obj.print調(diào)用print方法,實(shí)質(zhì)上就是obj對(duì)象的print方法就是調(diào)用Object.prototype.print方法
凡是定義在Object.prototype對(duì)象上面的屬性和方法,將被所有實(shí)例對(duì)象共享
Object()Object本身是一個(gè)函數(shù),可以當(dāng)作工具方法使用,將任意值轉(zhuǎn)為對(duì)象1、Object()返回一個(gè)空對(duì)象此方法常用于保證某個(gè)值一定是對(duì)象
var obj = Object(); // 等同于下面兩條語(yǔ)句 var obj = Object(undefined); var obj = Object(null); obj instanceof Object // true
Object()返回一個(gè)空對(duì)象
instanceof運(yùn)算符驗(yàn)證,一個(gè)對(duì)象是否為指定的構(gòu)造函數(shù)的實(shí)例,obj對(duì)象時(shí)Object的實(shí)例
2、如果參數(shù)是原始類型的值,Object()將其轉(zhuǎn)為對(duì)應(yīng)的包裝對(duì)象的實(shí)例var obj = Object(1); obj instanceof Object // true obj instanceof Number // true var obj = Object("foo"); obj instanceof Object // true obj instanceof String // true3、如果參數(shù)是一個(gè)對(duì)象,則總是返回該對(duì)象,不用轉(zhuǎn)換
var arr = []; var obj = Object(arr); // 返回原數(shù)組 obj === arr // true var fn = function() {}; var obj = Object(fn); // 返回原函數(shù) obj === fn // true // 一個(gè)判斷變量是否為對(duì)象的函數(shù) function isObject(value) { return value === Object(value); } isObject([]) // true isObject(true) // falseObject構(gòu)造函數(shù)
通過(guò)var obj = new Object()的寫法生成新對(duì)象,與字面量的寫法var obj = {}是等價(jià)的構(gòu)造函數(shù)的用法與工具方法相同點(diǎn)
使用時(shí),可以接受一個(gè)參數(shù),如果該參數(shù)是一個(gè)對(duì)象,則直接返回這個(gè)對(duì)象,如果是一個(gè)原始類型的值,則返回該值對(duì)應(yīng)的包裝對(duì)象
var o1 = {a: 1}; var o2 = new Object(o1); o1 === o1 // true var obj = new Object(123); obj instanceof Number // true構(gòu)造函數(shù)的用法與工具方法不同點(diǎn)
Object(value)表示將value轉(zhuǎn)成一個(gè)對(duì)象
new Object(value)表示生成一個(gè)對(duì)象,它的值是value
部署在Object對(duì)象自身的方法 Object.keys()用來(lái)遍歷對(duì)象的屬性Object.keys方法的參數(shù)是一個(gè)對(duì)象,返回一個(gè)數(shù)組,該數(shù)組的成員都是該對(duì)象自身的所有屬性名,而不是繼承的屬性名
只返回可枚舉的屬性
var obj = { p1: 123, p2: 456, }; Object.keys(obj) // ["p1", "p2"]Object.getOwnPropertyNames()
用來(lái)遍歷對(duì)象的屬性接受一個(gè)對(duì)象作為參數(shù),返回一個(gè)數(shù)組,包含了該對(duì)象自身的所有屬性名
還返回不可枚舉的屬性名
var obj = { p1: 123, p2: 456, }; Object.keys(obj) // ["p1", "p2"] var a = ["hello", "hi"]; Object.keys(a) // ["0", "1"] Object.getOwnPropertyNames(a) // ["0", "1", "length"]
可以用上面兩個(gè)方法提供計(jì)算對(duì)象屬性個(gè)數(shù)的方法
var obj = { p1: 1, p2: 2 }; Object.keys(obj).length // 2 Object.getOwnPropertyNames(obj).length // 2其他方法
對(duì)象屬性模型的相關(guān)方法
Object.getOwnPropertyDescriptor():獲取某個(gè)屬性的描述對(duì)象
Object.defineProperty():通過(guò)描述對(duì)象,定義某個(gè)屬性
Object.defineProperties():通過(guò)描述對(duì)象,定義多個(gè)屬性
控制對(duì)象狀態(tài)的方法
Object.preventExtensions():防止對(duì)象擴(kuò)展
Object.isExtensible():判斷對(duì)象是否可擴(kuò)展
Object.seal():禁止對(duì)象配置
Object.isSealed():判斷一個(gè)對(duì)象是否可配置
Object.freeze():凍結(jié)一個(gè)對(duì)象
Object.isFrozen():判斷一個(gè)對(duì)象是否被凍結(jié)
原型鏈相關(guān)方法
Object.create():該方法可以指定原型對(duì)象和屬性,返回一個(gè)新的對(duì)象Object的實(shí)例方法
Object.getPrototypeOf():獲取對(duì)象的Prototype對(duì)象
定義在Object.prototype對(duì)象,所有Object的實(shí)例對(duì)象都繼承了這些方法主要的Object實(shí)例對(duì)象的方法
Object.prototype.valueOf():返回當(dāng)前對(duì)象對(duì)應(yīng)的值
Object.prototype.toString():返回當(dāng)前對(duì)象對(duì)應(yīng)的字符串形式
Object.prototype.toLocaleString():返回當(dāng)前對(duì)象對(duì)應(yīng)的本地字符串形式
Object.prototype.hasOwnProperty():判斷某個(gè)屬性是否為當(dāng)前對(duì)象自身的屬性,還是繼承自原型對(duì)象的屬性
Object.prototype.isPrototypeOf():判斷當(dāng)前對(duì)象是否為另一個(gè)對(duì)象的原型
Object.prototype.propertyIsEnumerable():判斷某個(gè)屬性是否可枚舉
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/108031.html
摘要:等同于構(gòu)造函數(shù)與的用法很相似,幾乎一模一樣。實(shí)例對(duì)象的方法接受一個(gè)字符串作為參數(shù),返回一個(gè)布爾值,表示該實(shí)例對(duì)象自身是否具有該屬性。等同于方法生成的對(duì)象,繼承了它的原型對(duì)象的構(gòu)造函數(shù)。 分類 Object() 函數(shù) Object 本身是一個(gè)函數(shù),用來(lái)將任意值轉(zhuǎn)為對(duì)象。 如果參數(shù)為空(或者為 undefined 和 null),Object() 返回一個(gè)空對(duì)象。 var obj = Ob...
摘要:控制對(duì)象狀態(tài)的方法防止對(duì)象擴(kuò)展。判斷一個(gè)對(duì)象是否被凍結(jié)。返回當(dāng)前對(duì)象對(duì)應(yīng)的值。方法的作用是返回一個(gè)對(duì)象的字符串形式上面代碼表示,對(duì)于一個(gè)對(duì)象調(diào)用方法,會(huì)返回字符串用途通過(guò)自定義方法,可以讓對(duì)象在自動(dòng)類型轉(zhuǎn)換時(shí),得到想要的字符串形式。 概述Object()Object 構(gòu)造函數(shù)Object 的靜態(tài)方法「本身的方法Object.keys(),Object.getOwnPropertyNam...
摘要:一對(duì)象初始化創(chuàng)建對(duì)象的兩種方法對(duì)象初始化器或?qū)ο笞置媪繀?shù)成對(duì)的名稱字符串與值任何值,其中名稱通過(guò)冒號(hào)與值分隔之后簡(jiǎn)化了字面量寫法寫法以構(gòu)造函數(shù)形式來(lái)調(diào)用參數(shù)任何值訪問(wèn)對(duì)象屬性對(duì)象屬性可以用下標(biāo)小圓點(diǎn)標(biāo)記或者方括號(hào)標(biāo)記訪問(wèn)從開(kāi)始,對(duì)象初始化 一、對(duì)象初始化 創(chuàng)建對(duì)象的兩種方法: 1.對(duì)象初始化器或?qū)ο笞置媪浚簕[nameValuePair1[, nameValuePair2[, ......
摘要:需要鏈接標(biāo)準(zhǔn)參考教程對(duì)象阮一峰標(biāo)準(zhǔn)構(gòu)造器函數(shù)可能是最重要的對(duì)象之一,盡管我們從來(lái)不會(huì)直接調(diào)用它。該方法返回被凍結(jié)的對(duì)象。 Object 需要鏈接: MDN —— Object JavaScript標(biāo)準(zhǔn)參考教程(Object對(duì)象)——阮一峰 標(biāo)準(zhǔn)構(gòu)造器函數(shù)Object可能是JavaScript最重要的對(duì)象之一,盡管我們從來(lái)不會(huì)直接調(diào)用它。每當(dāng)使用一個(gè)對(duì)象直接量時(shí),都會(huì)隱式調(diào)用它: ...
摘要:當(dāng)以非構(gòu)造函數(shù)形式被調(diào)用時(shí),等同于。因此只有字符串會(huì)以數(shù)組形式,拷貝入目標(biāo)對(duì)象,其他值即數(shù)值字符串和布爾值都不會(huì)產(chǎn)生效果。注意,布爾值數(shù)值字符串分別轉(zhuǎn)成對(duì)應(yīng)的包裝對(duì)象時(shí),它們的原始值都在包裝對(duì)象的內(nèi)部屬性上面。擁有布爾值的字段的默認(rèn)值都是。 Object Object構(gòu)造函數(shù)創(chuàng)建一個(gè)對(duì)象包裝器。如果給定值是 null or undefined,將會(huì)創(chuàng)建并返回一個(gè)空對(duì)象,否則,將返回一個(gè)...
閱讀 662·2021-11-24 09:39
閱讀 2315·2021-11-22 13:54
閱讀 2197·2021-09-23 11:46
閱讀 3246·2019-08-30 15:55
閱讀 2679·2019-08-30 15:54
閱讀 2403·2019-08-30 14:18
閱讀 1546·2019-08-29 14:15
閱讀 2732·2019-08-29 13:49