当你改变一个用getter获取的对象时会发生什么
What happens when you alter an object retrieved with a getter?
我很好奇当你试图改变通过class
getter
检索的对象时会发生什么
class A {
constructor () {
let props = { foo: { hello: 'world' } };
Object.defineProperty(this, 'foo', {
get: () => props.foo
});
}
}
let a = new A();
a.foo; // { hello: 'world' }
a.foo.hello = 2;
a.foo.hello === 2; // true or false?
改变返回对象引用中的属性也会改变实例的对象引用
class A {
constructor () {
let props = { foo: { hello: 'world' } };
Object.defineProperty(this, 'foo', {
get: () => props.foo
});
}
}
let a = new A();
a.foo; // { hello: 'world' }
a.foo.hello = 2;
a.foo.hello === 2; // true
只有直接返回的值是不可变的,赋值不会改变实例的prop val:
a.foo = 'noob';
a.foo === 'noob'; // false
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- 在Javascript中重新分配对象变量时,原始对象会发生什么
- 确定var是否是javascript中的elementFinder对象的方法是什么
- 在这个使用hasOwnProperty的对象扩展程序中有一个错误,I'我不确定那个bug是什么,也不确定这个扩展
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- 从AngularJs获取谷歌地图对象的正确方法是什么
- 什么是“;原型;通过JavaScript中的Object Literal Notation创建的对象的链接
- 克服错误的更优雅的方法是什么:需要对象说明符.当通过JXA通过Messages发送SMS时,参数没有对象说明符
- XMLHttpRequest对象的open()和send()方法之间有什么区别
- 这两种不同的创建对象文字的方法有什么区别
- 什么'是从对象列表中一次编辑一个对象的正确Angular/Firebase方法
- 我需要使用什么语法来向一个对象的成员添加一个临时数组,该成员等同于一个字符串的通用列表
- 使用查询将对象数组发布到asp.net-mvc控制器操作的正确方法是什么
- 在jquery中,从同一对象的属性设置输入字段和标签的正确方法是什么
- 什么是'值是引用'表示JavaScript对象
- localStorage-对象的getter-, setter-方法的目的是什么?
- 什么是 ClojureScript 类似地将不存在的对象值设置为 JavaScript 中的 null
- 返回多个变量的 JavaScript 函数:数组与对象.最佳实践是什么
- Javascript:将类/对象引用设置为 NULL,内存中的子对象/类会发生什么
- 通过传递日期来创建Javascript Date对象?什么是dateString