Technology sharing

ES6 Reflecte Explicatio (III)

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.

  1. Modos quosdam obiecti obiecti, qui manifesto interna sunt ad linguam (ut Object.defineProperty) in objectum reflexionis pone. Hac in scaena, quaedam methodi in objecto et objecto et objecto cogitationis explicantur, et novae methodi in futuro solum in objectis Reflexionis explicabuntur. Aliis verbis, methodi interni linguae ex obiecto reflexo haberi possunt.
  2. Reditus eventus aliquas rationes obiectos mitigare, ut eos aequiores reddas. Exempli gratia: Object. Define Proprietas errorem mittet cum proprietas definiri non potest, cum Reflect. Define Proprietas falsa reddet.
// 老写法
try {
  Object.defineProperty(target, property, attributes);
  // success
} catch (e) {
  // failure
}
// 新写法
if (Reflect.defineProperty(target, property, attributes)) {
  // success
} else {
  // failure
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  1. Objectum operationes fiat ad mores eget. Operationes objectivae nonnullae sunt imperativi, ut nomen in obj et obj[nomen] dele, sed Reflect.has(obj, nomen) et Reflect.deleteProperty(obj, nomen) eas in mores functiones convertunt.
// 老写法
'assign' in Object // true
// 新写法
Reflect.has(Object, 'assign') // true
  • 1
  • 2
  • 3
  • 4
  1. Modi obiecti Reflectentis respondent modi Proxy unum ad unum. Hoc permittit Proxy objectum ut facile respondeat: Reflecte methodum ad mores defaltos perficiendos ac pro fundamento ad mores modificandos. Aliis verbis, quamvis Proxy modificat habitudines defectus, semper possis de moribus defaltam in Recogitare.
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;
  }
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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.

Communiter modi:

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
  • 1
  • 2
  • 3
  • 4
  • 5

Exemplum II: Using Reflect.set

let obj = { name: "Alice" };

// 设置属性
console.log(Reflect.set(obj, "age", 30)); // 输出:true

console.log(obj); // 输出:{ name: "Alice", age: 30 }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Exemplum III: Using Reflect.has

let obj = { name: "Alice" };

console.log(Reflect.has(obj, "name")); // 输出:true
console.log(Reflect.has(obj, "age"));  // 输出:false
  • 1
  • 2
  • 3
  • 4

Exemplum IV: Using Reflect.deleteProperty

let obj = { name: "Alice", age: 30 };

// 删除属性
console.log(Reflect.deleteProperty(obj, "age")); // 输出:true

console.log(obj); // 输出:{ name: "Alice" }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Exemplum V: Using Reflect.ownKeys

let obj = { name: "Alice", age: 30 };

console.log(Reflect.ownKeys(obj)); // 输出:["name", "age"]
  • 1
  • 2
  • 3

Exemplum VI: Using Reflect.preventExtensions

let obj = { name: "Alice" };

// 防止对象被扩展
console.log(Reflect.preventExtensions(obj)); // 输出:true

// 尝试添加新属性
console.log(Reflect.set(obj, "age", 30)); // 输出:false
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Exemplum VII: Using Reflect.isExtensible

let obj = { name: "Alice" };

console.log(Reflect.isExtensible(obj)); // 输出:true
  • 1
  • 2
  • 3

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!
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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.