前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航

Object.defineProperty详解

首页
2018-12-23 09:40:12
Front-End
JavaScriptObject.defineProperty

来自网络

# 一、简介

兼容性

在ie8下只能在DOM对象上使用,尝试在原生的对象使用 Object.defineProperty()会报错。

定义对象可以使用构造函数或字面量的形式

var obj = new Object;  //obj = {}
obj.name = "张三";  //添加描述
obj.say = function(){};  //添加行为
@前端进阶之旅: 代码已经复制到剪贴板

除了以上添加属性的方式,还可以使用Object.defineProperty定义新属性或修改原有的属性

# 二、Object.defineProperty()

# 2.1 定义

Object.defineProperty(obj, prop, descriptor)
@前端进阶之旅: 代码已经复制到剪贴板

参数说明:

  • obj:必需。目标对象
  • prop:必需。需定义或修改的属性的名字
  • descriptor:必需。目标属性所拥有的特性

返回值:传入函数的对象。即第一个参数obj

  • 针对属性,我们可以给这个属性设置一些特性,比如是否只读不可以写;是否可以被for..in或Object.keys()遍历。

给对象的属性添加特性描述,目前提供两种形式:数据描述和存取器描述

# 2.2 数据描述

当修改或定义对象的某个属性的时候,给这个属性添加一些特性

var obj = {
    test:"hello"
}
//对象已有的属性添加特性描述
Object.defineProperty(obj,"test",{
    configurable:true | false,
    enumerable:true | false,
    value:任意类型的值,
    writable:true | false
});
//对象新添加的属性的特性描述
Object.defineProperty(obj,"newKey",{
    configurable:true | false,
    enumerable:true | false,
    value:任意类型的值,
    writable:true | false
});
<
fe
  • 一、简介
  • 二、Object.defineProperty()
    • 2.1 定义
    • 2.2 数据描述
      • 2.2.1 value
      • 2.2.2 writable
      • 2.2.3 enumerable
      • 2.2.4 configurable
    • 2.3 存取器描述
      • 2.3.1 定义
      • 2.3.2 getter/setter

← nodejs系列之Koa2Javascript中的复制粘贴功能 →