2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Objectum reflecte, sicut proxy obiectum, novum API provisum est ab ES6 ad operando. Cogita obiecta ordinantur ad 4 proposita.
// 老写法
try {
Object.defineProperty(target, property, attributes);
// success
} catch (e) {
// failure
}
// 新写法
if (Reflect.defineProperty(target, property, attributes)) {
// success
} else {
// failure
}
// 老写法
'assign' in Object // true
// 新写法
Reflect.has(Object, 'assign') // true
Proxy(target, {
set: function(target, name, value, receiver) {
var success = Reflect.set(target, name, value, receiver);
if (success) {
console.log('property ' + name + ' on ' + target + ' set to ' + value);
}
return success;
}
});
Proxy methodus intercipit attributum attributum moribus scopo objecti. Reflect.set methodus utitur ad valores obiecti proprietatibus assignandi, ut mores primigenii perficiantur, et deinde ad ulteriores functiones disponantur.
Reflect.get (scopum, propertyKey [, receptaculum]): possessiones obiecti.
Reflect.set (scopum, propertyKey, valorem [, receptor]): proprietates obiecti.
Reflect.has (scopum, propertyKey): Decerne an proprietas sit in obiecto.
Reflect.deleteProperty(scopum, propertyKey): proprietates objecti Delere.
Reflect.ownKeys(scopum): Redit aciem omnium proprietatum ipsius obiecti.
Reflect.getOwnPropertyDescriptor (scopum, propertyKey): descriptor rei proprietatis posside.
Reflect.defineProperty (scopum, propertyKey, attributa): Definire vel mutare proprietates obiecti.
Reflect.preventExtensions(scopum): Ne objectum ne extendatur.
Reflect.isExtensible(scopum): Utrum obiectum sit extensibile.
Reflect.getExtension (scopum): exemplar obiecto Get.
Reflect.setPrototypeOf(scopum,prototypum):prototypum pone obiecti.
Exemplum I: Reflect.get Using
let obj = { name: "Alice", age: 25 };
let propName = "name";
console.log(Reflect.get(obj, propName)); // 输出:Alice
console.log(Reflect.get(obj, "gender")); // 输出:undefined
Exemplum II: Using Reflect.set
let obj = { name: "Alice" };
// 设置属性
console.log(Reflect.set(obj, "age", 30)); // 输出:true
console.log(obj); // 输出:{ name: "Alice", age: 30 }
Exemplum III: Using Reflect.has
let obj = { name: "Alice" };
console.log(Reflect.has(obj, "name")); // 输出:true
console.log(Reflect.has(obj, "age")); // 输出:false
Exemplum IV: Using Reflect.deleteProperty
let obj = { name: "Alice", age: 30 };
// 删除属性
console.log(Reflect.deleteProperty(obj, "age")); // 输出:true
console.log(obj); // 输出:{ name: "Alice" }
Exemplum V: Using Reflect.ownKeys
let obj = { name: "Alice", age: 30 };
console.log(Reflect.ownKeys(obj)); // 输出:["name", "age"]
Exemplum VI: Using Reflect.preventExtensions
let obj = { name: "Alice" };
// 防止对象被扩展
console.log(Reflect.preventExtensions(obj)); // 输出:true
// 尝试添加新属性
console.log(Reflect.set(obj, "age", 30)); // 输出:false
Exemplum VII: Using Reflect.isExtensible
let obj = { name: "Alice" };
console.log(Reflect.isExtensible(obj)); // 输出:true
Exemplum VIII: Using Reflect.getPrototypeOf et Reflect.setPrototypeOf
let proto = { sayHello: function() { console.log("Hello!"); }};
let obj = Object.create(proto);
console.log(Reflect.getPrototypeOf(obj) === proto); // 输出:true
// 设置新原型
let newProto = { sayGoodbye: function() { console.log("Goodbye!"); }};
Reflect.setPrototypeOf(obj, newProto);
console.log(obj.sayGoodbye); // 可以访问新原型上的方法
obj.sayGoodbye(); // 输出:Goodbye!
Objectum Reflectum praebet copiam methodorum proxy laqueis respondentium, faciens JavaScript operationes magis intuitivam et convenientem. Usura Recogitatio efficit constantiam et expectata operationum mores, praesertim cum condiciones vel errores defectus explicite capi necesse est.