javascript学习(九)对象属性的特性
2016-12-20 12:37
344 查看
1.属性特性的修改
Object.defineProperty()
功能:给对象添加/修改一个属性并指定该属性的配置语法:Object.defineProperty(obj,prop,descriptor)
参数:
obj:需要定义的对象 prop:需要定义或修改的属性名 descriptor:属性定义或修改的属性的描述
descriptor的数据属性:
configurable:总开关,一旦为false,则不能再配置了,同时这个属性也无法delete,但是可以把writable特性的true变成false; enumerable:是否可枚举; value:与属性有关的值; writable:是否可写。 configurable,enumrable,writable这几个属性特性默认均为false。
这里还有一个关于属性的表格:
var person = {}; Object.defineProperty(person, "name", { value:"Tom", writable:false, enumerable:false, configurable:false }); console.log(person.name); //Tom console.log(Object.keys(person)); //[] person.name = "Linda"; console.log(person.name); //Tom
descriptor的访问器属性:
get:一个给属性提供getter的方法,如果没有getter则为undefined。方法将返回作用属性的值,默认为undefined set:一个给属性提供setter的方法,如果没有setter则为undefined。该方法将受到作为唯一参数的新值分配给属性。
具体实例如下:
var person = { username:"king", sex:'man', get age(){ return 12; }, set age(val) { console.log("不能设置" + val); } }; console.log(person.username); console.log(person.sex); person.age = 10;
var obj = {}; Object.defineProperty(obj, "x", { get : function () { return "10"; } }) console.log(obj.x);
注意:这些选项不一定是自身属性,如果是继承来的也要考虑。为了确认保留这些默认值,你可能要在这之前冻结 Object.prototype,明确指定所有的选项,或者将 proto 属性指向空。
相关文章推荐
- javascript学习笔记(二十) 获得和设置元素的特性(属性)
- JavaScript学习笔记,创建对象,属性访问
- 【JavaScript】【学习】1、对象的属性
- JavaScript 对象属性操作和方法学习笔记(上)
- 深入学习javascript面向对象及高级特性
- Javascript学习之全局对象的非原生属性
- JavaScript学习随记——常见全局对象属性及方法
- JavaScript中的高级特性及特别对象、属性和方法
- python 学习笔记7(类/对象的属性;特性,__getattr__)
- javascript学习笔记(二十) 获得和设置元素的特性(属性)
- Javascript学习笔记之 对象篇(一) : 对象的使用和属性
- Javascript中的高级特性及特别对象、属性和方法
- JavaScript学习10 JS数据类型、强制类型转换和对象属性
- Javascript学习笔记:对象的属性类型
- JavaScript中的高级特性及特别对象、属性和方法
- javascript 学习笔记(7)----window 对象的4个属性
- JavaScript delete用法,属性,特性,执行上下文,激活对象 综合篇
- JavaScript之面向对象的概念,对象属性和对象属性的特性简介
- JavaScript学习笔记之对象属性
- javascript中对象的属性的特性