js之oop <三>属性标签
读取属性标签
获取对象属性标签,用 Object.getOwnPropertyDescriptor方法。
getOwnPropertyDescriptor(); 参数:属性所在对象(object),属性名(string)
var obj = { code:2,element:"ele" };
Object.getOwnPropertyDescriptor(obj,"code");
//输出 { value: 2, writable: true, enumerable: true, configurable: true }
getOwnPropertyDescriptor返回该属性标签的对象。
value 属性值
writeable 属性是否可写(是否可修改)
enumerable 属性是否可枚举(是否在for in遍历中出现)
configurable 属性的其他属性标签是否可修改或者该属性是否可delete
一般方式添加这四个属性标签默认都是true。
****************************************************************************************************************
定义属性标签
定义对象属性标签,用 Object.defineProperty()方法。
defineProperty(); 参数:目标对象(object),属性名(string),属性标签(object json(对象字面量)格式创建)
这里defineProperty的第三个参数的属性包括:value,writeable,enumerable,configurable。value必须赋值,writeable,enumerable,configurable默认都为false。
var obj = {};
Object.defineProperty(obj,"o_name",{
value:"obj_name",
writeable:false,
enumerable:false,
configurable:false
});
obj.o_name = "New_name"; //输出 obj_name
//writeable为false,所以无法修改该属性值。
delete obj.o_name; //返回 false
//configurable为false,所以无法被delete。
Object.keys(obj) //返回空集合
//enumerable为false,所以无法遍历
批量定义属性标签
定义对象属性标签,用 Object.defineProperties()方法。
defineProperties(); 参数:目标对象(object),批量属性标签(object json(对象子面量)格式创建)
function o(){};
var o1 = new o();
Object.defineProperties(o1,{a:{value:1,enumerable:true},
b:{value:2,writable:true},
c:{value:3,configurable:true,writable:true}});
Object.getOwnPropertyDescriptor(o1,"a");
//返回 { value: 1,writable: false,enumerable: true,configurable: false }
Object.getOwnPropertyDescriptor(o1,"b");
//返回 { value: 2,writable: true,enumerable: false,configurable: false }
Object.getOwnPropertyDescriptor(o1,"c");
//返回 { value: 2,writable: true,enumerable: false,configurable: true }
****************************************************************************************************************
遍历对象属性
遍历对象属性除了用for in还可以用 Object.keys()方法。
keys(); 参数:遍历对象(object)。
keys()返回对象属性的数组。
var obj = { a:1,b:2,c:3,d:4 };
obj.e = 5;
Object.keys(obj);
//返回 [ 'a', 'b', 'c', 'd', 'e' ]
Object.defineProperty(obj,"e",{value:15,enumerable:false});
Object.keys(obj);
//返回 [ 'a', 'b', 'c', 'd' ]
obj.e; //输出 15
js之oop <三>属性标签的更多相关文章
- WCF入门教程(三)定义服务协定--属性标签
WCF入门教程(三)定义服务协定--属性标签 属性标签,成为定义协议的主要方式.先将最简单的标签进行简单介绍,以了解他们的功能以及使用规则. 服务协定标识,标识哪些接口是服务协定,哪些操作时服务协定的 ...
- js之oop <二> 对象属性
js中对象属性可以动态添加和删除.删除对象属性用delete关键字. function obj(){ } var oo = new obj(); oo.a = "a"; oo.b ...
- WCF入门教程(三)属性标签
属性标签,成为定义协议的主要方式.先将最简单的标签进行简单介绍,以了解他们的功能以及使用规则. 服务协定标识,标识哪些接口是服务协定,哪些操作时服务协定的一部分,以及传输对象的定义.如果已经有所了解, ...
- JS中OOP之模拟封装和继承和this指向详解
大家好,今天我带大家学习一下js的OOP, 大家都知道,面向对象有三个基本特征,继承,封装和多态,面向对象的语言有那么几种,C++,PHP,JAVA等,而功能强大的JS可以模拟实现面向对象的两大特征, ...
- riot.js教程【五】标签嵌套、命名元素、事件、标签条件
前文回顾 riot.js教程[四]Mixins.HTML内嵌表达式 riot.js教程[三]访问DOM元素.使用jquery.mount输入参数.riotjs标签的生命周期: riot.js教程[二] ...
- 【总结整理】js获取css的属性(内部,外部,内嵌(写在tag中))
在JS中需要获取某个元素的宽高或者是绝对定位的位置信息,通常我们会这么写: var elemWidth = elem.style.width; console.log(elemWidth); //(空 ...
- 深入理解OOP(三):多态和继承(动态绑定和运行时多态)
在前面的文章中,我们介绍了编译期多态.params关键字.实例化.base关键字等.本节我们来关注另外一种多态:运行时多态, 运行时多态也叫迟绑定. 深入理解OOP(一):多态和继承(初期绑定和编译时 ...
- 拖拽系列二、利用JS面向对象OOP思想实现拖拽封装
接着上一篇拖拽系列一.JavaScript实现简单的拖拽效果这一篇博客将接着对上一节实现代码利用JS面向对象(OOP)思维对上一节代码进行封装; 使其模块化.避免全局函数污染.方便后期维护和调用:写到 ...
- js倒计时函数和(js禁用和恢复a标签的操作)
<script type="text/javascript"> /*获取手机号*/ var start_time=60; function get_phone_nums ...
随机推荐
- 深入理解Spark RDD
RDD是什么? RDD,全称是Reslilient Distributed Datasets,是一个容错的,并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区.同时,RDD还 ...
- swift2.0单例
import Foundation public class SwiftSingleton{ var name = "000" public static le ...
- Invoke() 方法是 Unity3D 的一种委托机制
Invoke() 方法是 Unity3D 的一种委托机制 如: Invoke("SendMsg", 5); 它的意思是:5 秒之后调用 SendMsg() 方法: 使用 Inv ...
- Android 通过 Wifi 调试 Debug (Android Studio)
参考资料: http://www.cnblogs.com/sunzhenxing19860608/archive/2011/07/14/2106492.html 前提: Android 手机 和 PC ...
- 实现easyui datagrid在没有数据时显示相关提示内容
本示例实现easyui datagrid加载/查询数据时,如果没有相关记录,则在datagrid中显示没有相关记录的提示信息,效果如下图所示 本实例要实现如下图所示的效果: 本示例easyui版本为1 ...
- [Android Tips] 12. How to Create a Dash Line Shape
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http: ...
- adadmin: error while loading shared libraries: libclntsh.so.10.1
EBS R12.2运行adadmin报错: $ adadmin adadmin: error while loading shared libraries: libclntsh.so.10.1: ca ...
- ThroughRain第一次冲刺总结
团队名:ThroughRain 项目确定:<餐厅到店点餐系统> 项目背景:本次项目是专门为餐厅开发的一套订餐系统.大家有没有发现在节假日去餐厅吃饭会超级麻烦,人很多, 热门的餐厅基本没有座 ...
- BJFU 1057
描述 斐波那契额数列,我们都知道.现在qingyezhu想求斐波那契的某项值对2的某次方的结果.你可以帮一下他吗?他好可怜哦!计算了N的N次方次都错了,也挨了ben大哥的N的N次方次的训了.我想你是个 ...
- RobotFrameWork webservice soap接口测试 (二)
上一篇提到做soap接口测试自己简单的写了个py,然后就简单的实现了个客户端能对远程接口进行调用,对返回的数据进行解析,可后面想着也觉得不对劲,soap协议虽说不像http协议那么普及,但是现在很多公 ...