{
// Objects are extensible by default.
var empty = {};
console.log('Reflect.isExtensible:', Reflect.isExtensible(empty)) // === true
// ...but that can be changed.
Reflect.preventExtensions(empty);
console.log('Reflect.isExtensible after preventExtensible:', Reflect.isExtensible(empty)) // === true
// Reflect.preventExtensions(1); // Uncaught TypeError: Reflect.preventExtensions called on non-object
console.log('Object.preventExtensions:', Object.preventExtensions(1))
}
/**
* Reflect.set()
Reflect.set 方法允许你在对象上设置属性。 它的作用是给属性赋值并且就像 property accessor 语法一样, 但是它是以函数的方式。
语法
Reflect.set(target, propertyKey, value[, receiver])
解释 *
参数 含义 必选
target 获取原型的目标对象 Y
propertyKey 设置的属性的名称 Y
value 设置的值 Y
receiver 如果遇到 setter, this 将提供给目标调用 N
*/
/**
/** API-Reflect.apply(),和 Function.prototype.apply() 功能类似。
argumentsList:target函数调用时传入的实参列表,该参数应该是一个数组或类数组的对象,可选 */
/**
应用:利用反射实例化类,调用不同类去实例化对象 */
/**
/**
propertyKey 将被删除的属性的名称 Y */
/**
*/
/**
Reflect.getOwnPropertyDescriptor() 静态方法 Reflect.getOwnPropertyDescriptor() 与 Object.getOwnPropertyDescriptor() 方法相似。 如果在对象中存在,则返回给定的属性的属性描述符,否则返回 undefined。 语法 Reflect.getOwnPropertyDescriptor(target, propertyKey) 解释 参数 含义 必选 target 需要寻找属性的目标对象 Y propertyKey 获取自己的属性描述符的属性的名称 N */
/**
/**
/**
{ console.log('Reflect.ownKeys:', Reflect.ownKeys({ z: 3, y: 2, x: 1 })) // [ "z", "y", "x" ]
}
{ // Objects are extensible by default. var empty = {}; console.log('Reflect.isExtensible:', Reflect.isExtensible(empty)) // === true // ...but that can be changed. Reflect.preventExtensions(empty); console.log('Reflect.isExtensible after preventExtensible:', Reflect.isExtensible(empty)) // === true // Reflect.preventExtensions(1); // Uncaught TypeError: Reflect.preventExtensions called on non-object console.log('Object.preventExtensions:', Object.preventExtensions(1)) }
{ var obj = {}; Reflect.set(obj, "prop", "我是Reflect.set的prop"); // true console.log('Reflect.set:', obj.prop); // "value" // Array var arr = ["duck", "duck", "duck"]; Reflect.set(arr, 2, "goose"); // true console.log('Reflect.set arr:', arr); // ["duck", "duck", "goose"] // It can truncate an array. Reflect.set(arr, "length", 1); // true console.log('Reflect.set arr length:', arr) // ["duck"] // 只有一个参数,key和value都是undefined var obj = {}; Reflect.set(obj); // true console.log(obj) // 6_Reflect.js:293 {undefined: undefined} console.log( Reflect.getOwnPropertyDescriptor(obj, undefined)) // { value: undefined, writable: true, enumerable: true, configurable: true } }
{ let obj = {} Reflect.setPrototypeOf(obj, Object.prototype); // true console.log(Reflect.getPrototypeOf(obj))
}