对象的属性定义

Object.defineProperty(obj, prop, desc)

  1. obj 需要定义属性的当前对象
  2. prop 当前需要定义的属性名
  3. desc 属性描述符

desc

value: 属性值, 默认undefined

set: setter方法, 默认undefined

get:getter方法, 默认undefined

configurable: 属性是否可配置和删除,默认false

  •  false 时,不能删除当前属性,且不能重新配置当前属性的描述符, 但是在writable: true的情况下,可以改变value的值
  • true时,可以删除当前属性(delete xx.propName),可以配置当前属性所有描述符

writable:是否可修改,默认false

  • true时,可修改value的值,
  • false时,不可修改value的值
  • 注意:可以把writable的状态由true改为false,但是无法由false改为true;
  • 注意:若同时设置了set和get,writable自动转为true

enumerable:是否可枚举

  • true时,可枚举,
  • false时,不可枚举
let obj = {}
let temp = null
Object.defineProperty(obj, 'name', {
  get: function () {
    return temp
  },
  set: function (val) {
    temp = val
  },
 writable: true,
  configurable: true,
  enumerable: true
})

  

原文地址:https://www.cnblogs.com/baixinL/p/14200958.html