1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-28 21:32:20 +00:00

docs(Reflect): fix Reflect.setPrototypeOf #693

This commit is contained in:
ruanyf 2018-06-05 13:33:35 +08:00
parent 0f536b7217
commit 688ca45e6f

View File

@ -313,16 +313,27 @@ Reflect.getPrototypeOf(1) // 报错
### Reflect.setPrototypeOf(obj, newProto)
`Reflect.setPrototypeOf`方法用于设置对象的`__proto__`属性,返回第一个参数对象,对应`Object.setPrototypeOf(obj, newProto)`
`Reflect.setPrototypeOf`方法用于设置目标对象的原型prototype,对应`Object.setPrototypeOf(obj, newProto)`方法。它返回一个布尔值,表示是否设置成功
```javascript
const myObj = new FancyThing();
const myObj = {};
// 旧写法
Object.setPrototypeOf(myObj, OtherThing.prototype);
Object.setPrototypeOf(myObj, Array.prototype);
// 新写法
Reflect.setPrototypeOf(myObj, OtherThing.prototype);
Reflect.setPrototypeOf(myObj, Array.prototype);
myObj.length // 0
```
如果无法设置目标对象的原型(比如,目标对象禁止扩展),`Reflect.setPrototypeOf`方法返回`false`
```javascript
Reflect.setPrototypeOf({}, null)
// true
Reflect.setPrototypeOf(Object.freeze({}), null)
// false
```
如果第一个参数不是对象,`Object.setPrototypeOf`会返回第一个参数本身,而`Reflect.setPrototypeOf`会报错。