属性特性

属性特性:

  • value              属性值
  • writable               可修改值与否
  • enumerable         可列举与否
  • configurable         可删除与否

propertyName:属性名称,可以自定义,比如常见的name,age

属性描述对象:包含四大特性的对象

得到某属性的特性: Object.getOwnPropertyDescriptor(obj, propertyName);

哪一个对象的哪一个属性

 

修改某属性特性: Object.defineProperty(obj, propertyName, descriptor)

哪一个对象   哪一个属性   属性描述符对象

 修改属性特性,就像是给自行车补胎,先找到是哪个自行车,然后找是前胎还是后胎,最后拿出“补胎胶”。

使用此方法时,如果属性存在,会更新其特性;

如果属性不存在,通过给定的特性和特性值来创建该属性,没有提供值的特性值默认为false

 

configurable:

false:

  1. 不能修改 configurable 标志。
  2. 不能修改 enumerable 标志。
  3. 不能将 writable: false 修改为 true(反过来则可以)。
  4. 不能修改访问者属性的 get/set(但是如果没有可以分配它们)。
  5. 不能删除该属性

防止修改和删除属性特性,允许修改对象的值value。

一旦设置为不可设置,就不能再改回来。

 1 let user = {
 2   name: "John"
 3 };
 4 
 5 Object.defineProperty(user, "name", {
 6   writable: false,
 7   configurable: false
 8 });
 9 
10 // 不能修改 user.name 或它的标志
11 // 下面的所有操作都不起作用:
12 user.name = "Pete";
13 delete user.name;
14 Object.defineProperty(user, "name", { value: "Pete" });
原文地址:https://www.cnblogs.com/flyover/p/14156389.html