探索Object.create

探索Object.create

語法

Object.create(proto, [propertiesObject])bash

參數介紹

  • proto
    • 新建立對象的原型對象
  • propertiesObject
    • 可選參數。該參數表示將要添加到新建立對象的可枚舉屬性(自身定義的屬性,而不是其原型鏈上的枚舉屬性)
    • 對應於**Object.defineProperties()**的第二個參數
  • 返回值
    • 帶着指定的原型對象和屬性的新對象
  • 異常
    • 若是propertiesObject被指定爲一個非對象的類型,會拋出TypeError異常

返回值

  • 返回值是一個Object
  • 返回值的原型也就是Object.__proto__被指定爲proto

代碼示例

let proto = {};
let createdObject = Object.create(proto);
console.log(createdObject.__proto__ === proto);
複製代碼
  • 打印結果爲: true

第二個參數: propertiesObject

Object.defineProperties

語法

Object.defineProperties(obj, props)函數

參數
  • obj
    • 在obj上定義或修改屬性對象
  • props: 由如下鍵構成的對象
    • configurable: 表示該屬性是否能夠從對象中刪除
    • enumerable: 表示該屬性是否能夠被枚舉
    • value: 該屬性的值
    • writable: 該屬性的值是否能夠改變
    • get: 做爲該屬性的getter函數
    • set: 做爲屬性的setter函數
代碼示例
let obj = {};
Object.defineProperties(obj, {
    "name": {
        value: "Cat",
        enumerable: true
    }
});
console.log(obj);
複製代碼
  • 打印結果爲: {name: 'Cat'}

Object.create帶propertiesObject參數

let createdObject2 = Object.create({}, {
    "name": {
        value: "Cat",
        enumerable: true
    }
});
console.log(createdObject2.hasOwnProperty("name"));
複製代碼
  • 打印結果: true
  • 能夠看出定義的參數是新對象的自身的屬性
相關文章
相關標籤/搜索