属性特性的默认值辨析
2015-09-28 14:28
543 查看
在《JavaScript高级程序设计(第三版)》140页中,作者写到:
在调用Object.defineProperty()方法时,如果不指定,configurable、enumerable 和 writable 特性的默认值都是false。
这里的默认值为false,指的是通过defineProperty添加一个对象属性时的情形,比如:
var person = {};
Object.defineProperty(person, "name", {
value : "FM",
});
var descriptor = Object.getOwnPropertyDescriptor(person, "name");
alert(descriptor.value); //FM
alert(descriptor.configurable); //false
alert(descriptor.enumerable); //false
alert(descriptor.writable); //false
此时,person的name属性的configurable、enumerable和writable特性的值都是false。
但是,通过Object实例或字面量形式添加的属性,上述三个特性为ture:
var person = new Object();
person.name = "FM";
//或
//var person = {name : "FM"};
var descriptor = Object.getOwnPropertyDescriptor(person, "name");
alert(descriptor.value); //FM
alert(descriptor.configurable); //true
alert(descriptor.enumerable); //true
alert(descriptor.writable); //true
此时,通过defineProperty()修改person的name属性的特性,对于没有指定的特性,其值保持不变。
Object.defineProperty(person, "name", {
value : "MF",
writable : false
});
var descriptor = Object.getOwnPropertyDescriptor(person, "name");
alert(descriptor.value); //MF
alert(descriptor.configurable); //true
alert(descriptor.enumerable); //true
alert(descriptor.writable); //false
在调用Object.defineProperty()方法时,如果不指定,configurable、enumerable 和 writable 特性的默认值都是false。
这里的默认值为false,指的是通过defineProperty添加一个对象属性时的情形,比如:
var person = {};
Object.defineProperty(person, "name", {
value : "FM",
});
var descriptor = Object.getOwnPropertyDescriptor(person, "name");
alert(descriptor.value); //FM
alert(descriptor.configurable); //false
alert(descriptor.enumerable); //false
alert(descriptor.writable); //false
此时,person的name属性的configurable、enumerable和writable特性的值都是false。
但是,通过Object实例或字面量形式添加的属性,上述三个特性为ture:
var person = new Object();
person.name = "FM";
//或
//var person = {name : "FM"};
var descriptor = Object.getOwnPropertyDescriptor(person, "name");
alert(descriptor.value); //FM
alert(descriptor.configurable); //true
alert(descriptor.enumerable); //true
alert(descriptor.writable); //true
此时,通过defineProperty()修改person的name属性的特性,对于没有指定的特性,其值保持不变。
Object.defineProperty(person, "name", {
value : "MF",
writable : false
});
var descriptor = Object.getOwnPropertyDescriptor(person, "name");
alert(descriptor.value); //MF
alert(descriptor.configurable); //true
alert(descriptor.enumerable); //true
alert(descriptor.writable); //false
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- IE8开发人员工具教程(二)
- 在flex中执行一个javascript方法的简单方式
- Flex结合JavaScript读取本地路径的方法
- PowerShell中执行Javascript的方法示例
- javascript asp教程第六课-- response方法
- javascript asp教程More About Recordsets
- javascript asp教程第十二课---session对象