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:
parent
0f536b7217
commit
688ca45e6f
@ -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`会报错。
|
||||
|
Loading…
x
Reference in New Issue
Block a user