成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript 中 Object.defineProperty 的使用

mcterry / 2713人閱讀

摘要:一旦目標(biāo)對象訪問該屬性,就會調(diào)用這個方法,并返回結(jié)果。如果為,則任何嘗試刪除目標(biāo)屬性或修改屬性以下特性的行為將被無效化,默認(rèn)為。語法參數(shù)目標(biāo)對象要為目標(biāo)對象添加的屬性,其中和分別代表中的第二和第三個參數(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.

直接在一個對象上定義一個新的屬性,或修改一個已經(jīng)存在的屬性。這個方法會返回該對象。

語法

Object.defineProperty(obj, prop, descriptor)

參數(shù)

Object obj 目標(biāo)對象

String prop 需要定義的屬性

Object descriptor 該屬性擁有的特性,可設(shè)置的值有:

value 屬性的值,默認(rèn)為 undefined

writable 該屬性是否可寫,如果設(shè)置成 false,則任何對該屬性改寫的操作都無效(但不會報(bào)錯),默認(rèn)為 false。

get 一旦目標(biāo)對象訪問該屬性,就會調(diào)用這個方法,并返回結(jié)果。默認(rèn)為 undefined。

set 一旦目標(biāo)對象設(shè)置該屬性,就會調(diào)用這個方法。默認(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è)置訪問器 (getset) 和 wriablevalue,否則會報(bào)以下錯誤:

Invalid property.  A property cannot both have accessors and be writable or have a value
實(shí)際應(yīng)用

我們知道,在 Express.js 升級到 4.0 之后,它把很多功能從核心庫中移除了。當(dāng)我們訪問那些被移除的屬性時,它會報(bào)錯,告訴我們該屬性已經(jīng)被移除了。這個功能就是通過 Object.defineProperty 來實(shí)現(xiàn)的??纯丛创a吧:

[
  "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 類似,只不過這個方法可以設(shè)置多個屬性。

語法

Object.defineProperties(obj, props)

參數(shù)

Object obj 目標(biāo)對象

Object props 要為目標(biāo)對象添加的屬性,其中 keyvalue 分別代表 Object.defineProperty 中的第二和第三個參數(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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/85889.html

相關(guān)文章

  • 詳解JavaScript之神奇Object.defineProperty

    摘要:與當(dāng)與同時為時,屬性不能重新使用定義,嚴(yán)格模式下會報(bào)錯示例云麒報(bào)錯當(dāng)或者為時,屬性可以重新使用定義,這一點(diǎn)讀者不妨自行測試。 摘要: JavaScript有個很神奇的Object.defineProperty(),了解一下? =與Object.defineProperty 為JavaScript對象新增或者修改屬性,有兩種不同方式:直接使用=賦值或者使用Object.definePro...

    baishancloud 評論0 收藏0
  • JavaScript深入理解對象方法——Object.defineProperty()

    摘要:返回值被傳遞給函數(shù)的對象。描述該方法允許精確添加或修改對象的屬性。描述符必須是兩種形式之一不能同時是兩者。可以是任何有效的值數(shù)值,對象,函數(shù)等。該方法返回值被用作屬性值。該方法將接受唯一參數(shù),并將該參數(shù)的新值分配給該屬性。 Object.defineProperties() Object.defineProperty() 方法會直接在一個對象上定義一個新屬性,或者修改一個對象的現(xiàn)有屬性...

    woshicixide 評論0 收藏0
  • JavaScript Object.defineProperty 用法

    摘要:默認(rèn)為,表示不能被枚舉,和中無法枚舉該屬性,對也有影響。表示對象屬性是否可以被刪除,以及除和特性外的其它特性能否被修改。寬松模式中,給只讀屬性賦值不會生效。 在 JavaScript 中,常通過下面方式,添加或修改對象的屬性: obj.name = John 除此之外,還能通過 Object.defineProperty() 方法,添加或修改對象的屬性。更重要的是,除了目標(biāo)對象 obj...

    VEIGHTZ 評論0 收藏0
  • 理解JavaScriptObject.defineProperty()函數(shù)

    摘要:理解的函數(shù)在進(jìn)入今天的內(nèi)容之前我們可以先考慮這么一個場景在你的項(xiàng)目中你有這么一個對象如下所示我們的要求就是你要給添加一個屬性當(dāng)?shù)幕蛘甙l(fā)生變化的時候也要隨之變化而且當(dāng)我們設(shè)置了的值的時候那么相應(yīng)的它的和也隨之發(fā)生變化那么我們應(yīng)該怎么做呢如果你 理解JavaScript的Object.defineProperty()函數(shù) 在進(jìn)入今天的內(nèi)容之前,我們可以先考慮這么一個場景,在你的項(xiàng)目中你有這...

    ninefive 評論0 收藏0
  • javascript高級程序設(shè)計(jì)》筆記:對象數(shù)據(jù)屬性和訪問器屬性

    摘要:枚舉對象的屬性第二種情況設(shè)置為,可以被枚舉。內(nèi)置對象訪問器屬性方法介紹摘自方法返回指定對象上一個自有屬性對應(yīng)的屬性描述符。對象中存在的屬性描述符主要有數(shù)據(jù)描述符和訪問器描述符兩種返回傳遞給函數(shù)的對象參考中的 1. 什么是對象 對象是無序?qū)傩缘募?創(chuàng)建自定義對象最簡單的方式就是以字面量的形式創(chuàng)建對象(或創(chuàng)建一個Object實(shí)例),然后再為它添加屬性和方法,如下所示: var perso...

    mating 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<