做外贸用什么视频网站,给外国小孩 做 英语题用的网站,做网站公司有哪些,万网首页文章目录 一、value二、writable三、访问器属性#xff1a;get和set四、configurable五、注意事项 在 JavaScript 中#xff0c;我们经常需要控制对象属性的特性#xff0c;包括可写、可枚举等#xff0c;本篇博客将介绍常见的对象属性使用及其特点。
本篇博客我们用首先O… 文章目录 一、value二、writable三、访问器属性get和set四、configurable五、注意事项 在 JavaScript 中我们经常需要控制对象属性的特性包括可写、可枚举等本篇博客将介绍常见的对象属性使用及其特点。
本篇博客我们用首先Object.create来举例首先介绍一下Object.createObject.create(proto, propertiesObject) ,Object.create分别有两个参数proto是新创建对象的原型对象propertiesObject是可选参数该传入对象可枚举的自有属性将为新创建的对象添加具有对应属性名称的属性描述符。
一、value
value: 属性的值默认为 undefined
let prop1 {name: {value: value1,},
};const obj Object.create({ foo: 1 }, prop1);
console.log(obj); 执行结果
在上面例子中我们创建一个新对象它的原型是一个{foo: 1}的对象并添加一个名为 ‘name’值为 value1 的属性
二、writable
writable: 布尔值表示属性值是否可修改默认为 false
let prop1 {name: {value: value1,},
};const obj Object.create({ foo: 1 }, prop1);
obj.name value2;
console.log(obj);执行结果 若我们想之后可以对属性值进行修改需要将writable改为true
let prop1 {name: {value: value1,writable: true,},
};const obj Object.create({ foo: 1 }, prop1);
obj.name value2;
console.log(obj);三、访问器属性get和set
访问器属性get和set我们一般配套使用
get: 作为访问器属性时获取函数默认为 undefinedset: 作为访问器属性时设置函数默认为 undefined
let num 18;
let prop1 {age: {get: function () {console.log(获取年龄);return num;},set: function (val) {// 可以根据实际需求进行更复杂的逻辑处理if (val 18) {console.log(成年了);} else {console.log(未成年);}},},
};const obj Object.create({ foo: 1 }, prop1);obj.age 8;
console.log(obj.age);四、configurable
此属性描述符的类型可以更改并且属性可以从相应的对象中删除则为 true。默认为 false
更改当configurable为true时可以更改属性否则会报错
let prop1 {name: {value: value1,configurable: true,},
};const obj Object.create({ foo: 1 }, prop1);
Object.defineProperties(obj, {name: {value: Hello,},
});
console.log(obj.name); //Hello若上面configurable改为false则
删除当configurable为true时可以更改属性否则会报错
let prop1 {age: {value: value1,configurable: true,},
};const obj Object.create({ foo: 1 }, prop1);delete obj.age;
console.log(obj.age); //undefined若上面configurable改为false则
五、注意事项
当 writable、enumerable 或 configurable 未指定时它们默认为 false。如果省略属性描述符对象某个属性则将使用默认值。在严格模式下尝试删除或修改不可配置configurable:false的属性或者添加名称与现有不可配置属性冲突的属性会抛出错误。如果一个属性描述符没有 value、writable、get、set 键中的任何一个那么它被视为一个数据描述符。如果一个属性描述符同时具有 value 或 writable 和 get 或 set 键中的任意一个组合就会抛出异常。