js--Object的靜態方法和例項方法
Object.create(proto[, propertiesObject])
- 用於建立新物件,第一個引數是新物件的原型,第二個引數用於設定物件的屬性,以及對屬性進行進一步描述(descriptor)。
- 建立完全空物件:
var o1 = Object.create(null) \\ 一個沒有原型的物件,此時連最基本的toString(),valueOf()方法都沒有
- 建立普通空物件:
var o2 = Object.create(Object.prototype) \\效果和new Object()、{}一樣
- 配置第二個引數:
o = Object.create(Object.prototype, {
foo: { // foo會成為所建立物件的資料屬性
writable: true,
configurable: true,
value: "hello"
},
bar: { // bar會成為所建立物件的訪問器屬性
configurable: false,
get: function () {
return 10
},
set: function (value) {
console.log("Settingo.bar
to", value)
}
}
})` - descriptor的取值有如下幾種:
- value:屬性的值,預設為undefined
-writable:如果為false,屬性的值就不能被重寫,只能為只讀了 - configurable:總開關,一旦為false,就不能再設定他的(value,writable,configurable)
- enumerable:是否能在for...in迴圈中遍歷出來或在Object.keys中列舉出來。
- get:不寫則預設為undefined,下同
- set:想用(get 和 set),就不能用(wriable 或 value中的任何一個)
注意區分:如果是運用Object.defineProperty(),如果不指定,則configurable、enumerable 、writable 預設為false,但是如果是直接在物件{}上定義的configurable、enumerable 、writable,則預設為true。
- 訪問器屬性:configurable,enumberable,get,set。
物件屬性描述符:Object.getOwnPropertyDescriptor(obj, prop)
- 傳入引數分別是物件,以及相應的屬性名。
- 如果是資料屬性,則具有configurable、enumerable 、writable、value等4個值。
- 如果是訪問器屬性,則具有configurable,enumberable,get,set等4個值。
Object.defineProperty(obj, prop, descriptor)
- 方法會直接在一個物件上定義一個新屬性,或者修改一個已經存在的屬性, 並返回這個物件。
Object.defineProperty(obj, "key", { enumerable: false, configurable: false, writable: false, value: "static"});
Object.defineProperties(obj, props)
- 方法在一個物件上新增或修改一個或者多個自有屬性,並返回該物件。
var obj = {};Object.defineProperties(obj, { "property1": { value: true, writable: true }, "property2": { value: "Hello", writable: false } // 等等.});alert(obj.property2) //彈出"Hello"來源: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties
Object.getPrototypeOf( obj )
- 返回傳入的例項物件的原型
- isPrototype()可以判斷一個原型物件是否是傳入的例項引數的原型,例:Person.prototype.isPrototypeOf( person1 )
相關文章
- javascript 靜態方法和例項方法例項JavaScript
- javascript的靜態方法和例項方法簡單介紹JavaScript
- Python例項方法、類方法、靜態方法Python
- Python Class 的例項方法/類方法/靜態方法Python
- 靜態方法和例項方法的區別以及如何恰當使用
- vue 快速入門 系列 —— 例項方法(或 property)和靜態方法Vue
- Java靜態方法和例項方法 java中的陣列作為形參傳入Java陣列
- Java開發筆記(六十四)靜態方法引用和例項方法引用Java筆記
- 你真的瞭解靜態方法與例項方法的區別麼?
- Python - 物件導向程式設計 - 例項方法、靜態方法、類方法Python物件程式設計
- [Python 基礎] Python 例項方法、靜態方法和類方法詳解 (包含區別和用法)Python
- JNI/NDK開發指南(6):C/C++訪問Java例項方法和靜態方法C++Java
- c#通過反射動態執行類的例項及靜態方法C#反射
- Java的方法靜態方法Java
- Python 靜態方法和類方法的區別Python
- Python的靜態方法和類成員方法Python
- Python常見面試題006 類方法、類例項方法、靜態方法有何區別?Python面試題
- 類的靜態屬性和方法
- PHP 中 static 靜態屬性和靜態方法的呼叫PHP
- PHP類的靜態(static)方法和靜態(static)變數PHP變數
- 程式設計之 同步靜態方法和單例模式的選擇程式設計單例模式
- 靜態變數與靜態方法變數
- vue例項的屬性和方法Vue
- Object上的靜態方法Object
- 靜態變數和例項變數區別?變數
- JavaScript 靜態屬性與靜態方法JavaScript
- 從例項出發,瞭解單例模式和靜態塊單例模式
- php例項化物件的例項方法PHP物件
- 介面中的預設方法與靜態方法
- 靜態頁面佈局例項
- java8介面的靜態方法和預設方法Java
- Laravel Eloquent 分表方法 支援create 和with等靜態宣告model的方法Laravel
- 注意!非靜態內部類和非靜態方法的匿名類的this$0屬性
- Object C學習筆記10-靜態方法和靜態屬性Object筆記
- Promise 原始碼:靜態方法Promise原始碼
- 靜態庫破解方法――skinmagic
- 1.9 靜態頁面佈局例項
- Promise 靜態 API 的使用方法PromiseAPI