Javascript学习笔记:对象的属性类型
在ECMAScript中有两种属性:数据属性和访问器属性
1、数据属性
configurable:表示能否通过delete删除属性从而重新定义属性;或者能否修改属性的特性;或者能否把属性修改为访问器属性。
enumerable:表示能否通过for-in循环返回属性。
writable:表示能否修改属性的值。
value:包含这个属性的数据值,读取属性的时候,从这个位置读;写入属性的时候,把新的值保存在这个位置。
2、访问器属性
configurable:表示能否通过delete删除属性从而重新定义属性;或者能否修改属性的特性;或者能否把属性修改为数据属性。
enumerable:表示能否通过for-in 循环返回属性。
get:在读取属性的时候调用的函数。
set:在设置属性的时候调用的函数。
①对于直接在对象上定义的属性,configurable、enumerable、writable的默认值为true:
var person={};
person.name="张三";
console.log(Object.getOwnPeopertyDescriptor(person,'name')) //Object {value: "张三", writable: true, enumerable: true, configurable: true}
②对于通过Object.defineProperty()或者Object.defineProperties()定义的属性,configurable、enumerable、writable的默认值为false:
var person={};
Object.defineProperty(person,'name',{value:'张三'});
console.log(Object.getOwnPropertyDescriptor(person,'name'));//Object {value: "张三", writable: false, enumerable: false, configurable: false}
③当configurable设置为false时,所有的属性就不能重新设定,也不能删除了。但是当configurable设置为false时,writable设置为true时,value属性的值是可以被直接更改的,但是当writable再次设置为false时,writable属性就不能重新设置回true了。
var b={};
Object.defineProperty(b,'b',{configurable:false,writable:true});
Object.getOwnPropertyDescriptor(b,'b')//Object {value: undefined, writable: true, enumerable: false, configurable: false}
Object.defineProperty(b,'b',{writable:false})
Object.getOwnPropertyDescriptor(b,'b')//Object {value: undefined, writable: false, enumerable: false, configurable: false}
Object.defineProperty(b,'b',{writable:true})//Uncaught TypeError: Cannot redefine property: b(…)
④访问器属性不能直接定义,只能通过Object.defineProperty()来定义。
⑤当访问器属性只设置了get属性,那么该属性是只读的;反之,当访问器属性只设置了set属性,那么该属性是只写的。
⑥一次性定义多个属性,可以用Object.defineProperties()
var person={};
Object.defineProperties(person,{name:{value:'张三',configurable:true},sex:{value:'男',writable:true}});
Object.getOwnPropertyDescriptor(person,'name')//Object {value: "张三", writable: false, enumerable: false, configurable: true}
Object.getOwnPropertyDescriptor(person,'sex')//Object {value: "男", writable: true, enumerable: false, configurable: false}
⑦查看对象对应的属性的configurable、enumerable、writable的值可以通过Object.getOwnPropertyDescriptor()方法。
Javascript学习笔记:对象的属性类型的更多相关文章
- javascript学习笔记(四) Number 数字类型
数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数 toExponential() 方法 用科学 ...
- JavaScript学习笔记-对象
枚举对象的属性:通常用for(...in...)来循环遍历,由于 for in 总是要遍历整个原型链,因此如果一个对象的继承层次太深的话会影响性能 for(var i in foo){ if(foo. ...
- JavaScript学习笔记(五)——类型、转换、相等、字符串
第六章 类型 相等 转换等 一.类型 1 typeof(); typeof是一个内置的JavaScript运算符,可用于探测其操作数的类型. 例: <script language=" ...
- JavaScript学习笔记——对象基础
javascript对象基础 一.名词解释: 1.基于对象 一切皆对象,以对象的概念来编程. 2.面向对象编程(oop Object oriented programming) A.对象 就是人们要研 ...
- JavaScript学习笔记——对象的创建
对象是JavaScript基本数据类型,在JavaScript中除了Undefined.Null.布尔型(ture.false).字符串和数字之外,其他的都属于对象. 在JavaScript中,一个对 ...
- JavaScript学习笔记-基础语法、类型、变量
基础语法.类型.变量 非数字值的判断方法:(因为Infinity和NaN他们不等于任何值,包括自身) 1.用x != x ,当x为NaN时才返回true; 2.用isNaN(x) ,当x为NaN或 ...
- JavaScript学习笔记——对象分类
对象的分类 一.对象的分类 1.内置对象 Global Math 2.本地对象 Array Number String Boolean Function RegExp 3.宿主对象 DOM BOM 二 ...
- JavaScript学习笔记——对象知识点
javascript对象的遍历.内存分布和封装特性 一.javascript对象遍历 1.javascript属性访问 对象.属性 对象[属性] //字符串格式 //javascript属性的访问方法 ...
- javascript学习笔记2-typeof、Number类型、Boolean()
1.typeof操作符 对一个值使用typeof操作符可能返回下列某个字符串 "undefined"——这个值未定义 "boolean"——这个值是布尔值 &q ...
- javascript学习笔记 - 引用类型 基本包装类型
六 基本包装类型 Boolean,Number,String 这三个引用类型亦称为基本包装类型,与基本的数据类型boolean,number,string相关联.为了方便操作这些基本类型的数据. 引用 ...
随机推荐
- 一道打印M的面试题
public class Demo { /** * 平面图形题(二维数组) */ public static void main(String[] args) { int num = 25; int ...
- 使用NPOI将TABLE内容导出到EXCEL
项目中需要将页面中的table内容导出到EXCEL,在用了几种方法后发现NPO是最快&最好的 需要应用 NPOI.dll 还有个Ionic.Zip.dll不知道有用没,没去研究,两个DLL都放 ...
- Bootstrap 弹出框和警告框插件
一.弹出框 弹出框即点击一个元素弹出一个包含标题和内容的容器. //基本用法 <button class="btn btn-lg btn-danger" type=" ...
- 初步了解JSONP
一.JSON 与 JSONP JSON是一种基于文本的数据交换方式(数据描述格式),JSONP是一种非官方跨域数据交互协议. ajax的核心是通过XmlHttpRequest获取非本页内容,而json ...
- 【Swing】理解Swing中的事件与线程
talk is cheap , show me the code. Swing中的事件 事件驱动 所有的GUI程序都是事件驱动的.Swing当然也是. GUI程序不同于Command Line程序,一 ...
- Python中的函数修饰符@
首先,什么是函数修饰符?函数修饰符就是对原有函数做一层包装.比如有以下两个函数: 复制代码 def func1(): print 'I am function func1' def func2(): ...
- 详解php的curl几个函数
关于php的curl一系列函数,这里解释一下它们的作用. 在html中,我们可以通过form设置http的post和get提交,但假如我们获取的数据不是从html中来的,而是php脚本主动向其他服务器 ...
- cocos2dx 3.x(TexturePacker进行图片加密)
游戏开发过程中要涉及到大量的图片,使用TexturePacker可以把小图合成大图.这是我们使用最多的功能,但是TexturePacker还带有对图片加密的功能.之前还是对加密不慎了解,所以写下来分享 ...
- jsp+ajax实现无刷新
jsp+ajax实现无刷新,鼠标离开文本框即验证用户名 jsp+ajax实现无刷新,鼠标离开文本框即验证用户名(本功能多用于注册) input.jsp(表单提交页面): %@ page content ...
- AJAX-----06XMLHttpRequest对象的处理返回的XML类型数据
我们首先要确保XML文件是否正常执行 如果访问时候报类似 Parse error: syntax error, unexpected 'version' (T_STRING 这样的错误,我们则需要 ...