第一种 Object.defineProperty
这种是在vue源码中看见的
let obj = {
$data: {}
};
Object.defineProperty(obj, '$data', {
get() {
return this;
},
set() {
return console.warn('只读属性不能修改');
}
})
复制代码
第二种使用闭包实现
使用场景:团队协作开发的时候,没有详细的文档规范,防止队友误操作。
const Ds = (function () {
const obj = {
$data: {
a:1
}
}
class Ds {
get() {
return obj;
}
}
return new Ds();
})()
console.log(Ds.get());
console.log(Ds.obj); // undefind
复制代码
demo地址: js实现属性只读
转载于:https://juejin.im/post/5cda8c72e51d456cec195f20