了解JavaScript 对象属性的标签
对象属性的标签
value(属性值), writable(属性可写), enumerable(属性可枚举), configurable(属性可配置), 这些属性标签使对象所持有的属性体现出不同的特性, 以便开发者开发使用.
value
value, 属性的值, 这个属性是最直观的体现, 一个属性我们使用的就是它的值, 这个值的类型可以是对象, 字符串, 值等任意类型. 如果未设置的话, 值会是undefined.
Object.defineProperty(person, 'name', {
configurable : false,
writable : false,
enumerable : true,
value : "Jianwei Wang"
});
document.write(person.name); //Jianwei Wang
"Jianwei Wang"就是person.name的值.
configurable
confirurable, 顾名思义可配置的, 意思就是在标签为true时这个属性允许修改各种属性标签配置(true or false), delete关键字是否可以删除这个属性, 如果标签为false, 那么是不允许修改标签配置的, delete也不可以使用了. 它的作用主要是配置属性的标签.
writable
writable, 可写入的, 如果这个设置为false, 那么这个属性将不允许写入, 也就无法将writable设置为新的值.
代码演示, 可写与可配置的特性.
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<script type="text/javascript">
//声明一个对象并初始化
var person = {
name : "wang",
age : 23
};
//定义一个key为hobby的属性, 设置为不可配置, 值为eat.
//未设置的标签值默认为false, 所以这个属性是不允许配置, 枚举, 以及写入的.
Object.defineProperty(person, 'hobby', {
value : "eat"
});
person.hobby = "run"; //写入属性为run
document.write(person.hobby); //eat, 说明写入失败
Object.defineProperty(person, 'hobby', {
writable : true
}); //对属性进行重新配置, 发现出错, 不允许重新配置可写入.
</script>
</body>
</html>
enumerable
enumerable, 可枚举的, 如果将其关闭, 那么这个属性将不会被遍历出来. 所以那些用于属性遍历的方法就都不是很好用了(for in, Object.keys等), 检测还是可以的(in, hasOwnProperty等). 所以总结起来就是enumerable关闭后的作用就是, 让你知道我有, 但是就是不给你看.
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb18030">
<title></title>
<script type="text/javascript">
var person = {
name : "Jianwei Wang",
age : 23
}; //声明并初始化对象
Object.defineProperty(person, "gender", {
configurable : true,
enumerable : true,
value : "male"
}); //配置一个新的属性gender, 设置为可配置, 可枚举的, 值为male
document.write(Object.keys(person) + "<br />"); //name, age, gender
Object.defineProperty(person, "gender", {
enumerable : false,
}); //重新配置gender为不可枚举属性.
document.write(Object.keys(person) + "<br />"); //name, age
document.write("gender" in person); //true
</script>
</head>
<body>
</body>
</html>
了解JavaScript 对象属性的标签的更多相关文章
- Javascript对象属性与方法汇总
Javascript对象属性与方法汇总 发布时间:2015-03-06 编辑:www.jquerycn.cn 详细介绍下,javascript对象属性与对象方法的相关知识,包括javascript字符 ...
- 删除要被替换的元素的所有事件处理 程序和 JavaScript 对象属性
使用本节介绍的方法替换子节点可能会导致浏览器的内存占用问题,尤其是在 IE 中,问题更加明显.在删除带有事件处理程序或引用了其他 JavaScript 对象子树时,就有可能导致内存占用问题.假设 某个 ...
- JavaScript对象属性的基础教程指南
JavaScript是使用“对象化编程”的,或者叫“面向对象编程”的.所谓“对象化编程”,意思是把JavaScript能涉及的范围划分成大大小小的对象,对象下面还继续划分对象直至非常详细为止,所有的编 ...
- JavaScript对象属性访问的两种方式
JavaScript对象属性访问的两种方式 object.attribute object["attribute"] 例如: var employees = [ { "f ...
- JavaScript 对象属性
JavaScript 对象属性 属性中的 . 和 [ ](点 和 方括号)的区别 . :取对象自身的属性值: [ ]:括号内容可以是变量: var obj = {}; obj.name = 'Twx ...
- js 技巧 (六)JavaScript[对象.属性]集锦
JavaScript[对象.属性]集锦 SCRIPT 标记 用于包含javascript代码. 语法 属性 LANGUAGE 定义脚本语言 SRC 定义一个URL用以指定以.JS结尾的文件 windo ...
- javascript对象属性和数组的访问
javascript对象属性的访问 假如有对象test:var test = { "a":1, "b":2};直接访问对象test的属性a的值,有两种方法: ...
- JavaScript对象属性(一)
对象object 对象和数组很相似,数组是通过索引来访问和修改数据,对象是通过属性来访问和修改数据的. 这是一个示例对象: var cat = { "name": "W ...
- JavaScript对象属性 constructor
对象属性 constructor 属性返回对创建此对象的数组函数的引用; constructor(构造函数) 在对象创建或实例化时候被调用的方法.通常使用该方法来初始化数据成员和所需资源.构造函数不 ...
随机推荐
- CentOS7下自定义目录安装mono+jexus教程
一.阅读前须知: 1.本文属于安装完Centos7之后的步骤 2.如果还不了解mono,请点击mono 3.本篇主要内容是使用自定义目录安装mono+jexus教程,使用默认目录请查看使用默认目录安装 ...
- .NET应用程序与数据库交互的若干问题
我们知道,在应用程序中与数据库进行交互是一个比较耗时的过程,首先应用程序需要与应用程序建立连接,然后将请求发送到数据库,数据库执行操作,然后将结果集返回.所以在程序中,要尽量晚的与数据库建立连接,并且 ...
- ASP.NET MVC 视图(五)
ASP.NET MVC 视图(五) 前言 上篇讲解了视图中的分段概念.和分部视图的使用,本篇将会对Razor的基础语法简洁的说明一下,前面的很多篇幅中都有涉及到视图的调用,其中用了很多视图辅助器,也就 ...
- 在ASP.NET MVC5中实现具有服务器端过滤、排序和分页的GridView
背景 在前一篇文章<[初学者指南]在ASP.NET MVC 5中创建GridView>中,我们学习了如何在 ASP.NET MVC 中实现 GridView,类似于 ASP.NET web ...
- es6之let和const
在javascript中,我们都知道使用var来声明变量.javascript是函数级作用域,函数内可以访问函数外的变量,函数外不能访问函数内的变量. 函数级作用域会导致一些问题就是某些代码块内的变量 ...
- 使用自定义 classloader 的正确姿势
详细的原理就不多说了,网上一大把, 但是, 看了很多很多, 即使看了jdk 源码, 说了罗里吧嗦, 还是不很明白: 到底如何正确自定义ClassLoader, 需要注意什么 ExtClassLoade ...
- xamarin MasterDetailPage点击Master时卡顿现象
在很多项目中经常会使用到MasterDetailPage的布局方式,而且一般做为主页面来开发,在开发中,发现一个并不算Bug的问题,但是却发生了,以此记录下来,方便大家探讨. 现象是这样的,我开发了一 ...
- 异步与并行~List<T>是线程安全的吗?
返回目录 题目有点意思,大家都知道Dictionary<K,V>不是线程安全的类型,而List<T>是线程安全的吗?在今天之前大叔没有去测试过,而就在今天也是一个VIP问我,说 ...
- 11gRAC报错CRS-4535, CRS-4000解决
环境:AIX6.1 + Oracle11.2.0.4 RAC(2 nodes) 1.故障现象 2.定位问题 3.处理问题 1.故障现象 使用crsctl查看集群各资源状态,在任一节点都会直接报错CRS ...
- JavaScript: 零基础轻松学闭包
本文面向初学者,大神轻喷. 闭包是什么? 初学javascript的人,都会接触到一个东西叫做闭包,听起来感觉很高大上的.网上也有各种五花八门的解释,其实我个人感觉,没必要用太理论化的观念来看待闭包. ...