__defineGetter__,__defineSetter__和Object.defineProperty
2017-07-07 15:42
435 查看
// __defineGetter__ at the least works in more browsers // http://robertnyman.com/javascript/javascript-getters-setters.html // Object.defineProperty only works in Chrome //用法 String.prototype.__defineGetter__ = ('name',function(){ return nnn});
String.prototype.__defineSetter__ = ('name',function(x){ return nnn}); //这两个通常用来给内置对象定义seter和geter,不过已经要废弃了,取而代之的是Object.defineProperty
Object.defineProperty(obj, 'key', { // descriptor });
使得可以直接在某一对象上定义一个属性,这个属性可以是添加或修改现有的属性,前两个参数都很好理解,obj就是要修改的对象,key就是属性名,descriptor是一个对象,用来声明新添属性的一些特性,包括6个参数:
configurable:默认false,表示此属性是否可用
delete删除
enumerable: 默认为false,表示此属性是否可被
for...in、Object.keys遍历到
value:默认undefined,此属性的值,可以是任何JavaScript类型
writable:默认为false,此属性是否可被改写
get:默认undefined,指定一个函数,当属性被调用时,此函数也被调用,默认为返回属性值
set:默认undefined,指定一个函数,当属性被赋值时,此函数也被调用,仅接受一个参数,参数为属性被赋的值
var a = {}; Object.defineProperty = (a,'m',{ value:'hello world' }) console.log(a.m) //hello world
当然这是最简单的用法
相关文章推荐
- Object.defineProperty vs __defineGetter__ vs normal
- 理解defineProperty以及getter、setter
- setter=method @property(getter = getMethodName, setter = setMethodName) Object *obj;
- 原生js 对象属性监听,对象重写,defineProperty getter setter
- [转] 理解Object.defineProperty的作用
- JS的Object.defineProperty
- Javascript Object.defineProperty()
- Object.defineProperty
- vue 数据绑定实现的核心 Object.defineProperty()
- Object.defineProperty 函数 (JavaScript)
- 极简使用Object.defineProperty实现双向绑定
- ECMA5中的Object.defineProperty()方法
- Object.defineProperty 函数 (JavaScript)
- 利用 __defineGetter__ 和 __defineSetter__ 给对像追加属性
- JavaScript中对Object.defineProperty 函数 的理解
- property属性的setter、getter方法
- vue源码学习之Object.defineProperty对象属性监听
- vue 数据绑定实现的核心 Object.defineProperty()
- Object.defineProperty 函数
- JavaScript学习 - Object.defineProperty()