国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript 中 Object.defineProperty 的使用

mcterry / 2709人閱讀

摘要:一旦目標對象訪問該屬性,就會調用這個方法,并返回結果。如果為,則任何嘗試刪除目標屬性或修改屬性以下特性的行為將被無效化,默認為。語法參數目標對象要為目標對象添加的屬性,其中和分別代表中的第二和第三個參數。

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.

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

語法

Object.defineProperty(obj, prop, descriptor)

參數

Object obj 目標對象

String prop 需要定義的屬性

Object descriptor 該屬性擁有的特性,可設置的值有:

value 屬性的值,默認為 undefined

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

get 一旦目標對象訪問該屬性,就會調用這個方法,并返回結果。默認為 undefined

set 一旦目標對象設置該屬性,就會調用這個方法。默認為 undeinfed

configurable 如果為false,則任何嘗試刪除目標屬性或修改屬性以下特性(writable, configurable, enumerable)的行為將被無效化,默認為 false

enumerable 是否能在for...in循環中遍歷出來或在Object.keys中列舉出來。默認為 false

注意

descriptor 中不能同時設置訪問器 (getset) 和 wriablevalue,否則會報以下錯誤:

Invalid property.  A property cannot both have accessors and be writable or have a value
實際應用

我們知道,在 Express.js 升級到 4.0 之后,它把很多功能從核心庫中移除了。當我們訪問那些被移除的屬性時,它會報錯,告訴我們該屬性已經被移除了。這個功能就是通過 Object.defineProperty 來實現的。看看源碼吧:

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

語法

Object.defineProperties(obj, props)

參數

Object obj 目標對象

Object props 要為目標對象添加的屬性,其中 keyvalue 分別代表 Object.defineProperty 中的第二和第三個參數。

出處

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/85889.html

相關文章

  • 詳解JavaScript之神奇Object.defineProperty

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

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

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

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

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

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

    摘要:理解的函數在進入今天的內容之前我們可以先考慮這么一個場景在你的項目中你有這么一個對象如下所示我們的要求就是你要給添加一個屬性當的或者發生變化的時候也要隨之變化而且當我們設置了的值的時候那么相應的它的和也隨之發生變化那么我們應該怎么做呢如果你 理解JavaScript的Object.defineProperty()函數 在進入今天的內容之前,我們可以先考慮這么一個場景,在你的項目中你有這...

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

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

    mating 評論0 收藏0

發表評論

0條評論

mcterry

|高級講師

TA的文章

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