object,知识点详解,web网站开发
console.log(
Object.getOwnPropertyDescriptor(obj, “a”));
//{configurable: true,enumerable: true,value: 2,writable: true,proto: Object}
//修改其writable为不可改写
Object.defineProperty(obj,“a”,{
writable: false
})
console.log(obj.a); // 2
obj.a = 3
console.log(obj.a);//2 仍然是2,所以改写不成功
也可通过defineProperty定义数据属性。其configurable, enumerable, writable不设置默认值为false。
Object.defineProperty(obj, “b”,{
value: 1
});
console.log(Object.getOwnPropertyDescriptor(obj, “b”));
//{configurable: false,enumerable: false,value: 1,writable: false,proto: Object}
obj.b = 2
console.log(obj.b) // 1 (writable为false无法改写)
Object.defineProperty(obj, “b”, {
writable: true
})
// Uncaught TypeError: Cannot redefine property: b (报错,configurable为false,无法重新修改特性)
2 .访问器属性
不包含数据值。描述符有configurable, enumerable,get,set四个,不能再同时拥 有writable 或 value。
无法直接在对象上定义,需通过defineProperty 设置 configurable ,enumerable 默认为 false
var user = {
name: ‘xiao’
};
var count = 12;
//定义访问器属性age
Object.defineProperty(user,age,{
get: function(){
return count;
},
set: function(newVal){
count = newVal + 1;
}
})
console.log(user.age); //12 (意为调用get)
user.age = 42;//(意为调用set)
console.log(user.age); //43
console.log(Object.getOwnPropertyDescriptor(user, “age”));
//{ I
configurable: false
enumerable: false
get: f()
set: f(newVal)
proto: Object
}
属性必须为数据属性或访问器属性之一,不能同时是两者。writable/value是数据属性的描符,get/set是访问器属性的描述符,无法同时设置。
Object.defineProperty(user,like,{
value: ‘eat’,
get: function() {
return 1;
)
});
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
总结
阿里十分注重你对源码的理解,对你所学,所用东西的理解,对项目的理解。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
img-blog.csdnimg.cn/img_convert/d3ac9c078e3063bbc4ddc4fe929112c8.png)