当前位置: 首页 > news >正文

前端面试宝典---创建对象的配置

Object.create 对整个对象的多个属性值进行配置

创建对象 不可更改属性值

// 创建对象 不可更改属性值
let obj = Object.create({}, 
{name: {value: 'lisi',writable: false,},age: {value: 20,writable: true,}
})console.log('初始化obj', obj)
obj.name = 'wangwu'
console.log('更新不可变属性name', obj)
obj.age = 30
console.log('更新可变属性age', obj);   

在这里插入图片描述

创建对象 不可枚举属性

// 创建对象 不可枚举属性
let obj2 = Object.create({}, 
{name: {value: 'lisi',enumerable: false,},age: {value: 20,enumerable: true,}
})
for (const key in obj2) {console.log('不可枚举属性', key)
} // 不可枚举属性 age

创建对象 属性拦截器

// 创建对象 属性拦截器
let name = 'zhangsan'
let obj3 = Object.create({},{name: {get () {return name},set (value) {if (value === 'wangwu') {console.log('非法操作')return}name = value}}}
)console.log('初始化obj3', obj3)
obj3.name = 'wangwu'

在这里插入图片描述

Object.defineProperty 对一个对象的单个属性进行配置

let obj = { name: 'zhangsan' }
Object.defineProperty(obj, 'name', {value: 'lisi',writable: false,enumerable: false,configurable: false
})
console.log('obj', obj)
let obj2 = { name: 'wangwu' }
Object.defineProperty(obj2, 'name', {get () {return 'lisi'},set (value) {console.log('非法操作')}
})
console.log('obj2', obj2)`

在这里插入图片描述

总结

对象配置方法

Object.create(原型,配置) => 对象 :用于基于指定原型和配置创建对象,可进行整个对象的多个配置 。
Object.defineProperty(对象,属性名,配置) :用于为一个对象的单个属性进行配置。Object.defineProperties(obj, props)

配置项说明

  1. 值相关
    value:属性的默认值。
    writable:表示属性值是否可写。
  2. 访问器:
    setter(存储器 ):用于设置属性 value 。
    getter(获取器 ):用于获取属性 value 。
  3. 属性相关
    enumerable:决定属性是否能被 API 或者语法获取(即是否为开放属性)。
    configurable:决定属性是否可以被删除,以及是否能再次使用 defineProperty 重新定义。

http://www.mrgr.cn/news/98074.html

相关文章:

  • leetcode-动态规划25
  • Linux基础命令解释
  • mysql相关面试题
  • 银行业务发展历史
  • python相关面试题
  • C_内存 内存地址概念
  • C++学习之ORACLE③
  • 【LaTeX】
  • 《系统分析师-浏览试卷—总结》
  • C++指针(二)
  • c++知识点1
  • 使用 VcXsrv 在 Windows 10 上运行 Ubuntu 图形界面
  • 第八天 开始Unity Shader的学习之Blinn-Phong光照模型
  • Java 集合框架面经
  • 链式多分支规则树模型的应用
  • Harmony实战之简易计算器
  • 图像颜色空间对比(Opencv)
  • C++动态分配内存知识点!
  • (自用)蓝桥杯准备(需要写的基础)
  • 基于数字水印的公文流转系统设计与实现