博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES5之defineProperty
阅读量:5978 次
发布时间:2019-06-20

本文共 1239 字,大约阅读时间需要 4 分钟。

一 概述

Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。

对象里目前存在的属性描述符有两种主要形式:数据描述符和存取描述符。

如果一个描述符不具有value,writable,get 和 set 任意一个关键字,那么它将被认为是一个数据描述符。

如果一个描述符同时有(value或writable)和(get或set)关键字,将会产生一个异常。

当描述符中省略某些字段时,这些字段将使用它们的默认值。拥有布尔值的字段的默认值都是falsevaluegetset字段的默认值为undefined

configurable特性表示对象的属性是否可以被删除,以及除writable特性外的其他特性是否可以被修改。

enumerable定义了对象的属性是否可以在 for...in 循环和 Object.keys() 中被枚举。

二 直接给对象的属性赋值

var game = {    name : 'Ace Combat'};game.developer = 'NAMCO';console.log(Object.getOwnPropertyDescriptor(game,'developer'));

三 使用defineProperty定义属性

function Saint(){    var skill;    Object.defineProperty(this,'name',{        configurable: true,        enumerable:true,        value :null,        writable:true    });    Object.defineProperty(this,'skill',{        configurable:true,        enumerable:true,        get : function(){            return skill;        },        set : function(_skill){            skill = _skill;        }    })}var silver = new Saint();silver.name = 'Orpheus';console.log(silver);var gold = new Saint();gold.name = 'Aioria';gold.skill = 'Lightning Bolt';console.log(gold);

Chrome控制台

点击(...),调用getter方法 ( Invoke property getter),查看属性值

 

转载于:https://www.cnblogs.com/sea-breeze/p/7001204.html

你可能感兴趣的文章
VI快捷键攻略
查看>>
Win server 2012 R2 文件服务器--(三)配额限制
查看>>
卓越质量管理成就创新高地 中关村软件园再出发
查看>>
linux rsync 远程同步
查看>>
httpd的manual列目录漏洞
查看>>
myeclipse2014破解过程
查看>>
漫谈几种反编译对抗技术
查看>>
Timer 和 TimerTask 例子
查看>>
Spring BOOT 集成 RabbitMq 实战操作(一)
查看>>
安装python3.5注意事项及相关命令
查看>>
进程通信之无名信号量
查看>>
并发串行调用接口
查看>>
CMD 修改Host文件 BAT
查看>>
android幻灯片效果实现-Gallery
查看>>
实现Instagram的Material Design概念设计
查看>>
CentOS 6.x 快速安装L2TP ***
查看>>
一篇文章能够看懂基础源代码之JAVA篇
查看>>
Goldengate双向复制配置
查看>>
Oracle官方内部MAA教程
查看>>
DNS相关配置
查看>>