第一种 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地址: