摘要:一旦目標(biāo)對(duì)象訪問該屬性,就會(huì)調(diào)用這個(gè)方法,并返回結(jié)果。如果為,則任何嘗試刪除目標(biāo)屬性或修改屬性以下特性的行為將被無效化,默認(rèn)為。語法參數(shù)目標(biāo)對(duì)象要為目標(biāo)對(duì)象添加的屬性,其中和分別代表中的第二和第三個(gè)參數(shù)。
Object.defineProperty
The Object.defineProperty() method defines a new property directly on an object, or modifies an existing property on an object, and returns the object.
直接在一個(gè)對(duì)象上定義一個(gè)新的屬性,或修改一個(gè)已經(jīng)存在的屬性。這個(gè)方法會(huì)返回該對(duì)象。
語法Object.defineProperty(obj, prop, descriptor)
參數(shù)Object obj 目標(biāo)對(duì)象
String prop 需要定義的屬性
Object descriptor 該屬性擁有的特性,可設(shè)置的值有:
value 屬性的值,默認(rèn)為 undefined。
writable 該屬性是否可寫,如果設(shè)置成 false,則任何對(duì)該屬性改寫的操作都無效(但不會(huì)報(bào)錯(cuò)),默認(rèn)為 false。
get 一旦目標(biāo)對(duì)象訪問該屬性,就會(huì)調(diào)用這個(gè)方法,并返回結(jié)果。默認(rèn)為 undefined。
set 一旦目標(biāo)對(duì)象設(shè)置該屬性,就會(huì)調(diào)用這個(gè)方法。默認(rèn)為 undeinfed。
configurable 如果為false,則任何嘗試刪除目標(biāo)屬性或修改屬性以下特性(writable, configurable, enumerable)的行為將被無效化,默認(rèn)為 false。
enumerable 是否能在for...in循環(huán)中遍歷出來或在Object.keys中列舉出來。默認(rèn)為 false。
注意在 descriptor 中不能同時(shí)設(shè)置訪問器 (get 和 set) 和 wriable 或 value,否則會(huì)報(bào)以下錯(cuò)誤:
Invalid property. A property cannot both have accessors and be writable or have a value實(shí)際應(yīng)用
我們知道,在 Express.js 升級(jí)到 4.0 之后,它把很多功能從核心庫中移除了。當(dāng)我們?cè)L問那些被移除的屬性時(shí),它會(huì)報(bào)錯(cuò),告訴我們?cè)搶傩砸呀?jīng)被移除了。這個(gè)功能就是通過 Object.defineProperty 來實(shí)現(xiàn)的。看看源碼吧:
[ "json", "urlencoded", "bodyParser", "compress", "cookieSession", "session", "logger", "cookieParser", "favicon", "responseTime", "errorHandler", "timeout", "methodOverride", "vhost", "csrf", "directory", "limit", "multipart", "staticCache", ].forEach(function (name) { Object.defineProperty(exports, name, { get: function () { throw new Error("Most middleware (like " + name + ") is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware."); }, configurable: true }); });Object.defineProperties
The Object.defineProperties() method defines new or modifies existing properties directly on an object, returning the object.
和 Object.defineProperty 類似,只不過這個(gè)方法可以設(shè)置多個(gè)屬性。
語法Object.defineProperties(obj, props)
參數(shù)Object obj 目標(biāo)對(duì)象
Object props 要為目標(biāo)對(duì)象添加的屬性,其中 key 和 value 分別代表 Object.defineProperty 中的第二和第三個(gè)參數(shù)。
出處https://scarletsky.github.io/2015/08/18/Object-learning-in-javascript/
參考資料http://www.cnblogs.com/rubylouvre/archive/2010/09/19/1831128.html
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object
https://github.com/strongloop/express/blob/master/lib/express.js
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/85889.html
摘要:與當(dāng)與同時(shí)為時(shí),屬性不能重新使用定義,嚴(yán)格模式下會(huì)報(bào)錯(cuò)示例云麒報(bào)錯(cuò)當(dāng)或者為時(shí),屬性可以重新使用定義,這一點(diǎn)讀者不妨自行測試。 摘要: JavaScript有個(gè)很神奇的Object.defineProperty(),了解一下? =與Object.defineProperty 為JavaScript對(duì)象新增或者修改屬性,有兩種不同方式:直接使用=賦值或者使用Object.definePro...
摘要:返回值被傳遞給函數(shù)的對(duì)象。描述該方法允許精確添加或修改對(duì)象的屬性。描述符必須是兩種形式之一不能同時(shí)是兩者。可以是任何有效的值數(shù)值,對(duì)象,函數(shù)等。該方法返回值被用作屬性值。該方法將接受唯一參數(shù),并將該參數(shù)的新值分配給該屬性。 Object.defineProperties() Object.defineProperty() 方法會(huì)直接在一個(gè)對(duì)象上定義一個(gè)新屬性,或者修改一個(gè)對(duì)象的現(xiàn)有屬性...
摘要:默認(rèn)為,表示不能被枚舉,和中無法枚舉該屬性,對(duì)也有影響。表示對(duì)象屬性是否可以被刪除,以及除和特性外的其它特性能否被修改。寬松模式中,給只讀屬性賦值不會(huì)生效。 在 JavaScript 中,常通過下面方式,添加或修改對(duì)象的屬性: obj.name = John 除此之外,還能通過 Object.defineProperty() 方法,添加或修改對(duì)象的屬性。更重要的是,除了目標(biāo)對(duì)象 obj...
摘要:理解的函數(shù)在進(jìn)入今天的內(nèi)容之前我們可以先考慮這么一個(gè)場景在你的項(xiàng)目中你有這么一個(gè)對(duì)象如下所示我們的要求就是你要給添加一個(gè)屬性當(dāng)?shù)幕蛘甙l(fā)生變化的時(shí)候也要隨之變化而且當(dāng)我們?cè)O(shè)置了的值的時(shí)候那么相應(yīng)的它的和也隨之發(fā)生變化那么我們應(yīng)該怎么做呢如果你 理解JavaScript的Object.defineProperty()函數(shù) 在進(jìn)入今天的內(nèi)容之前,我們可以先考慮這么一個(gè)場景,在你的項(xiàng)目中你有這...
摘要:枚舉對(duì)象的屬性第二種情況設(shè)置為,可以被枚舉。內(nèi)置對(duì)象訪問器屬性方法介紹摘自方法返回指定對(duì)象上一個(gè)自有屬性對(duì)應(yīng)的屬性描述符。對(duì)象中存在的屬性描述符主要有數(shù)據(jù)描述符和訪問器描述符兩種返回傳遞給函數(shù)的對(duì)象參考中的 1. 什么是對(duì)象 對(duì)象是無序?qū)傩缘募?創(chuàng)建自定義對(duì)象最簡單的方式就是以字面量的形式創(chuàng)建對(duì)象(或創(chuàng)建一個(gè)Object實(shí)例),然后再為它添加屬性和方法,如下所示: var perso...
閱讀 1378·2021-11-24 09:38
閱讀 2086·2021-09-22 15:17
閱讀 2341·2021-09-04 16:41
閱讀 3452·2019-08-30 15:56
閱讀 3511·2019-08-29 17:19
閱讀 1939·2019-08-28 18:09
閱讀 1249·2019-08-26 13:35
閱讀 1711·2019-08-23 17:52