您的位置:首页 > Web前端 > JavaScript

属性特性的默认值辨析

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript