JS面向对象——defineProperty设置属性方法的封装
2019-01-09 08:52
423 查看
版权声明:进击的葱 https://blog.csdn.net/qlwangcong518/article/details/86129820
描述:
JS面向对象——defineProperty方法的封装
描述:
/* * Object.defineProperty(目标对象,属性/方法,属性描述对象) * 属性描述对象 Descriptor * * configurable 是否该属性可删除 * enumerable 是否该属性可遍历(是否可枚举) * writable 是否该属性可修改 * value 设置该属性的值 * * 访问器属性,如果使用访问器属性,不能设置writable和value值 * 设置setter函数,设置属性值的函数 * set:function (value) { this._a=value; }, 设置getter函数,获取属性值的函数 get:function () { return this._a; } * */
代码:
[code]<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script> var obj = { a: 1, b: 2 } Object.defineProperty(Object.prototype, "addKey", { value: function (key, value, enumerable, writable, configurable) { if (!enumerable) enumerable = false; if (!writable) writable = false; if (!configurable) configurable = false; Object.defineProperty(this, key, { value: value, enumerable: enumerable, writable: writable, configurable: configurable }) } }) //测试数据 obj.addKey("c", 50, true, true); console.log(obj); obj.c = 60; for (var key in obj) { console.log(key, obj[key]); } </script> </body> </html>
相关文章推荐
- 关于js面向对象的公有属性与私有属性的设置方法
- js面向对象之公有、私有、静态属性和方法详解
- JS设置网页图片vspace和hspace属性的方法
- js面向对象的公有、私有属性和方法
- js面向对象之公有、私有、静态属性和方法详解
- 四二、js操作DOM(dom)改变css3属性时封装方法使自动识别浏览器添加css3属性前缀
- js面向对象的公有、私有属性和方法
- js设置和获取自定义属性的方法
- js面向对象---基本的概念、属性、方法
- 【封装】java中为什么要将属性进行私有化,又使用set和get方法来设置和获取属性呢?
- js+jquery动态设置/增加/删除/获取元素属性的两种方法集锦对比(动态onclick属性设置+动态title设置)
- 原生js 对象属性监听,对象重写,defineProperty getter setter
- js属性对象的propertyIsEnumerable方法
- js面向对象之公有、私有 、静态方法和属性,以及特权方法
- js属性与方法封装
- js+jquery动态设置/添加/删除/获取元素属性的两种方法集锦对照(动态onclick属性设置+动态title设置)
- js defineSetter -给js的 "class"自动增加一个set的属性(方法)
- js通过为function设置自定义属性的方法解决闭包陷阱
- js 封装 封装new 掉对象的所有属性,只暴露出对象的方法
- js面向对象的一些属性、方法