咱們可使用getOwnPropertyDescriptor來查看屬性狀態bash
var o = { a: 1 };
o.b = 2;
//a 和 b 皆爲數據屬性
Object.getOwnPropertyDescriptor(o,"a") // {value: 1, writable: true, enumerable: true, configurable: true}
Object.getOwnPropertyDescriptor(o,"b") // {value: 2, writable: true, enumerable: true, configurable: true}
複製代碼
若是想改變屬性的特徵或者定義訪問器屬性可使用Object.defineProperty函數
var o = { a: 1 };
Object.defineProperty(o, "b", {value: 2, writable: false, enumerable: false, configurable: true});
//a 和 b 都是數據屬性,但特徵值變化了
Object.getOwnPropertyDescriptor(o,"a"); // {value: 1, writable: true, enumerable: true, configurable: true}
Object.getOwnPropertyDescriptor(o,"b"); // {value: 2, writable: false, enumerable: false, configurable: true}
o.b = 3;
console.log(o.b); // 2
複製代碼
一樣也可使用get或者set來建立訪問器屬性性能
var o = { get a() { return 1 } };
console.log(o.a); // 1
複製代碼
function mynew(){
let obj = {};
let con = [].shift.call(arguments)
obj.__proto__ = con.prototype;
let r = con.call(obj,arguments)
return r instanceof Object ? r : obj;
}
複製代碼
Object.create = function(prototype){
var cls = function(){}
cls.prototype = prototype;
return new cls;
}
複製代碼