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(obj, newProto)
|
||||||
|
|
||||||
`Reflect.setPrototypeOf`方法用于设置对象的`__proto__`属性,返回第一个参数对象,对应`Object.setPrototypeOf(obj, newProto)`。
|
`Reflect.setPrototypeOf`方法用于设置目标对象的原型(prototype),对应`Object.setPrototypeOf(obj, newProto)`方法。它返回一个布尔值,表示是否设置成功。
|
||||||
|
|
||||||
```javascript
|
```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`会报错。
|
如果第一个参数不是对象,`Object.setPrototypeOf`会返回第一个参数本身,而`Reflect.setPrototypeOf`会报错。
|
||||||
|
Loading…
x
Reference in New Issue
Block a user