JavaScript ES5 对象方法
ECMAScript 5(2009)添加了许多新 对象方法 转换为 JavaScript。
管理对象
// 使用现有对象作为原型创建对象
对象.create()
// 添加或更改对象属性
Object.defineProperty(对象,属性,描述符)
// 添加或更改对象属性
Object.defineProperties(对象,描述符)
// 访问属性
Object.getOwnPropertyDescriptor(对象,属性)
// 以数组形式返回所有属性
对象.getOwnPropertyNames(对象)
// 访问原型
Object.getPrototypeOf(对象)
// 以数组形式返回可枚举属性
对象.keys(对象)
保护对象
// 防止向对象添加属性
对象.preventExtensions(对象)
// 如果可以向对象添加属性,则返回 true
对象.isExtensible(对象)
// 防止对象属性(不是值)的改变
对象.密封(对象)
// 如果对象是密封的,则返回 true
Object.isSealed(对象)
// 防止对对象进行任何更改
对象.冻结(对象)
// 如果对象被冻结则返回 true
Object.isFrozen(对象)
更改属性值
句法
Object.defineProperty(对象,属性,{值: 价值})
此示例更改属性值:
例子
const 人 = {
名字:“约翰”,
姓氏:“Doe”,
语言:“EN”
};
// 改变属性
Object.defineProperty(person,“语言”,{value:“NO”});
亲自尝试 »
更改元数据
ES5 允许更改以下属性元数据:
writable : true // 属性值可以改变
enumerable : true // 属性可以枚举
configurable : true // 属性可以重新配置
writable : false // 属性值不可改变
enumerable : false // 属性不可枚举
configurable : false // 属性不可重新配置
ES5 允许更改 getter 和 setter:
// 定义一个 getter
获取:函数(){ 返回语言 }
// 定义一个 setter
设置:函数(值){ 语言 = 值 }
此示例将语言设为只读:
Object.defineProperty(person, "语言", {writable:false});
这个例子使得语言不可枚举:
Object.defineProperty(person, "语言", {enumerable:false});
放置您的广告!
列出所有属性
此示例列出了对象的所有属性:
例子
const 人 = {
名字:“约翰”,
姓氏:“Doe”,
语言:“EN”
};
Object.defineProperty(person, "语言", {enumerable:false});
Object.getOwnPropertyNames(person); // 返回属性数组
亲自尝试 »
列出可枚举属性
此示例仅列出对象的可枚举属性:
例子
const 人 = {
名字:“约翰”,
姓氏:“Doe”,
语言:“EN”
};
Object.defineProperty(person, "语言", {enumerable:false});
Object.keys(person); // 返回可枚举属性的数组
亲自尝试 »
添加属性
此示例向对象添加新属性:
例子
// 创建一个对象:
const 人 = {
名字:“约翰”,
姓氏:“Doe”,
语言:“EN”
};
// 添加属性
Object.defineProperty(person, "year", {value:"2008"});
亲自尝试 »
添加 Getters 和 Setters
这 Object.defineProperty()
方法也可以用于添加 Getters 和 Setters:
例子
//创建一个对象
const person = {firstName:"John", lastName:"Doe"};
// 定义一个 getter
Object.defineProperty(person, “fullName”, {
获取:函数(){返回 this.firstName + " " + this.lastName;}
});
亲自尝试 »
反例
例子
// 定义对象
const obj = {计数器:0};
// 定义 setter
Object.defineProperty(obj, “重置”, {
获取:函数(){this.counter = 0;}
});
Object.defineProperty(obj,“增量”,{
获取:函数(){this.counter++;}
});
Object.defineProperty(obj, “减少”, {
获取:函数(){this.counter--;}
});
Object.defineProperty(obj, “添加”, {
设置:函数(值){this.counter + = 值;}
});
Object.defineProperty(obj, “减去”, {
设置:函数(i){this.counter - = i;}
});
// 使用计数器:
对象.重置;
obj.添加 = 5;
obj.减去 = 1;
对象.增量;
obj.减少;
亲自尝试 »