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相关联.为了方便操作这些基本类型的数据. 引用 ...
随机推荐
- 利用session完成用户登陆
package cn.itcast.cookie; import java.io.IOException; import java.io.PrintWriter; import java.util.L ...
- 封装常用的js(Base.js)——【01】理解库,获取节点,连缀,
封装常用的js(Base.js)——[01]理解库,获取节点,连缀, youjobit07 2014-10-10 15:32:59 前言: 现如今有太多优秀的开源javascript库, ...
- Markdown语法速查
Markdown教程:http://wowubuntu.com/markdown/ h1 # h1 h2 ## h2 h3 ### h3 h4 #### h4 h5 ##### h5 h6 ##### ...
- 使用Visual Studio 2015开发Android 程序
环境配置: 操作系统:win 7 64位 IDE:Visual Studio 2015 SDK:installer_r24.3.3-windows 安装前提: 编辑hosts文件(在附件可下载)因为安 ...
- python_os
1. 基本功能的介绍 os模块包含普通的操作系统的功能 2. 常用的变量 (1)os.name 获取正在使用的平台, Windows 返回 nt, Linux或者Unix 返回 posix 3. 常用 ...
- px、em、rem区别介绍
px.em.rem区别介绍 PX px像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的. PX特点 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能 ...
- pepperflash
sudo apt-get install pepperflashplugin-nonfree sudo update-pepperflashplugin-nonfree --install
- 湖大OJ-实验E----可判定的DFA的空问题
实验E----可判定的DFA的空问题 Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB Total submit ...
- 本地blast用法
格式化数据库: makeblastdb -in db.fasta -dbtype prot -parse_seqids -out dbname 参数说明: -in:待格式化的序列文件 -dbtype: ...
- svg学习(二)
svg嵌入html有以下3种方式: OBJECT < object data = " rect.svg " width = " 300 " heigh ...