小生愛

    


	    // Object.create: 创建一个具有指定原型且可选择性地包含指定属性的对象
	    // Object.create(proto, [ propertiesObject ])
	    // proto 例子
	    const person = {
	      name: '小花',
	      age: 24
	    }

	    // 以person为原型 创建了一个对象
	    // obj.__proto__ === person
	    const obj = Object.craete(person)




	    // propertiesObject 指定属性 包括 value writable enumerable configurable
	    // value: 属性值
	    // writable: 属性是否可写
	    // enumerable: 属性是否可枚举
	    // configurable: 属性是否可配置
	    // 这些属性默认 都是false
	    const person2 = {
	      name: '小蓝',
	      age: 23
	    }
	    // 创建以 person2为原型的对象 并添加了2个额外属性 size shape 并设置了
	    // 额外属性的数据属性
	    const obj2 = Object.create(person2, {
	      size: {
	        // value 指定值
	        value: '小米',
	        // 属性size 是否可写 默认是false 不可写
	        writable: false,
	        // 属性size 不可枚举
	        enumerable: false
	      },
	      shape: {
	        value: '小绿',
	        writable: true,
	        enumerable: true
	      }
	    })

	    // Object {shape: "小绿", size: "小米"}
	    log( obj2 )

	    // 因为size属性的 数据属性writable 设置为不可写 所以这里报错
	    // obj2.size = '小紫'

	    // shape name age 未输出size 因为enumerable = false 该属性不可枚举
	    for (let p in obj2) {
	      log(p)
	    }

	    // shape 属性可以写 因为writable = true
	    // 并且可枚举
	    obj2.shape = '小黄'
	    // 小黄
	    log(obj2.shape)