javascript面向对象之Object.defineProperty(a,b,c)
/*
    Object.defineProperty(a,b,c);介绍
    a:需要属性设置的对象
    b:需要设置的属性名,(键值)
    c:是一个用于描述属性值得json数据.这个json数据有configurable,eumerable,writable,value组成
    configurable:1.能否被delete删除,2.他的属性值能否被修改.3.能否把属性设置成访问器属性,默认是true,可以删除,,修改,设置
    eumerable:能否被for-in循环到
    writable:表示属性值能否被修改
    value:属性值.
    */
  var human = {}
     //将属性name设置成无法修改状态.
     Object.defineProperty(human, "name", { writable: false, value: "晁天王" });
     alert(human.name); //晁天王
     human.name = "宋江";//严格模式下会报错 
   alert(human.name); //宋江
//修改configurable为不可配置,则无法删除和修改属性的特性.
Object.defineProperty(human, "name", { configurable: false, value: "黑旋风李逵" });
alert(human.name); //黑旋风李逵
delete human.name;//严格模式下会报错
5 alert(human.name); //黑旋风李逵
//一旦把配置属性configurable设置成false,就不能在设置成true了.否则会报错
Object.defineProperty(human, "name", { configurable: true, value: "天罡星玉麒麟卢俊义" });//下面是报错截图

访问器属性:
 var human = {
         _age:18,//下划线是一种常用的记号.用于只能通过对象方法访问的属性
         role:"大人"
     };
     Object.defineProperty(human, "age", {
         get: function () {//放回age属性值
             return this._age;
         },
         set: function (ageValue) {//设置对象中的属性值
             if (ageValue >= 18)
                 this.role = "大人";
             else
                 this.role = "小孩";
         }
     });
     human.age = 20;
     alert(human.role); //大人
     human.age = 10;
     alert(human.role); //小孩
这个get和set在一起配合使用,可以很好的起到封装对象的作用.
javascript面向对象之Object.defineProperty(a,b,c)的更多相关文章
- Javascript观察者模式(Object.defineProperty、Reflect和Proxy实现)
		
什么是观察者模式? 答:在数据发生改变时,对应的处理函数自动执行.函数自动观察数据对象,一旦对象有变化,函数就会自动执行. 参考<原生JavaScript实现观察者模式>(https:// ...
 - 【转】javascript面向对象编程
		
摘要:本文本来是想自己写的,奈何花了好长时间写好之后忘记保存,还按了刷新键,一键回到解放前,索性不写了,所以本文是转载的. 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化. ...
 - Vue 双向数据绑定原理分析 以及 Object.defineproperty语法
		
第三方精简版实现 https://github.com/luobotang/simply-vue Object.defineProperty 学习,打开控制台分别输入以下内容调试结果 userInfo ...
 - Object.defineproperty实现数据和视图的联动 ------是不是就是 Angular 模型和视图的同步的实现方式???
		
参考:http://www.cnblogs.com/oceanxing/p/3938443.html https://developer.mozilla.org/zh-CN/docs/Web/Java ...
 - 20+行代码使用es5 Object.defineProperty 实现简单的watch功能
		
/** * 一个简单的demo 帮助理解defineProperty,只对Object类型参数有效 */ $watch=function(myObject,callback){ function in ...
 - 理解Object.defineProperty函数中的get与set
		
defineProperty是什么: 该函数可以直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象.通俗理解就是: 给对象添加一个新的属性,或者针对对象里的某些属性,可以给这 ...
 - 深入理解 Object.defineProperty 及实现数据双向绑定
		
Object.defineProperty() 和 Proxy 对象,都可以用来对数据的劫持操作.何为数据劫持呢?就是在我们访问或者修改某个对象的某个属性的时候,通过一段代码进行拦截行为,然后进行额外 ...
 - JS属性描述符之Object.defineProperty()定义对象属性特性
		
一.Object.defineProperty的作用 用来给对象新增属性,和修改对象中的属性. 二.JS对象中的描述符 js对象中两种属性描述符:数据描述符和存取描述符(访问描述符). 注意事项: 1 ...
 - MVVM双向绑定实现之Object.defineProperty
		
随着web应用的发展,直接操作dom的应用已渐行渐远,取而代之的是时下越来越流行的MVVM框架,dom操作几乎绝迹,这里面自然是框架底层封装的结果.MVVM框架的双向数据绑定使开发效率大大提高:然后在 ...
 
随机推荐
- php 易忽略问题
 - mac下搭建discuz论坛
			
1.开启web共享.(Mountain Lion参考:http://www.guomii.com/posts/30136) 2.支持php. http://www.cnblogs.com/elfsun ...
 - matlab mod()&rem()
			
一.介绍rem/mod(X,Y)当X,Y符号相同的时候,这两者一样,当符号不相同的时候才有差别,具体表现在rem结果的符号与被除数相同:mod结果的符号与除数相同 二.例子 >> a=9; ...
 - Java第十次作业--多线程
			
一.学习要点 认真看书并查阅相关资料,掌握以下内容: 理解进程和线程的区别 掌握Java多线程的两种实现方式和区别 理解线程对象的生命周期 熟悉线程控制的基本方法 掌握Java线程的同步机制 理解多线 ...
 - TI AM335x Linux MUX hacking
			
/********************************************************************************************* * TI ...
 - TJU Problem 1065 Factorial
			
注意数据范围,十位数以上就可以考虑long long 了,断点调试也十分重要. 原题: 1065. Factorial Time Limit: 1.0 Seconds Memory Limit ...
 - [LeetCode&Python] Problem 908. Smallest Range I
			
Given an array A of integers, for each integer A[i] we may choose any x with -K <= x <= K, and ...
 - 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.2 auto-focus
			
转载至:https://blog.csdn.net/wo541075754/article/details/75349556 auto-focus 在agenda-group章节,我们知道想要让Age ...
 - UVA10590 Boxes of Chocolates Again
			
题意 将正整数N拆分成若干个正整数之和,问有多少种不重复的拆分方案. \(n \leq 5000\) 分析 用f(i,j)表示将i拆成若干个数字,最大的那个数字(即最后一个数)不超过j的方案数. 转移 ...
 - ballerina 学习  三十 扩展开发(一)
			
ballerina 主要是分为两大类 基于ballerina 语言开发的,一般是客户端的connector 使用java语言开发的(类似的基于jvm的都可以),一般是注解以及进行构件生成 baller ...