【发布时间】:2017-10-22 09:30:06
【问题描述】:
如果我创建了一个具有数组作为属性的对象,是否可以在该对象中编写一个方法,以便在创建实例后,硬编码命令现在的行为有所不同?
例如,如果我定义了一个构造函数:
function Bunny(){
this.arr = [1,2,3];
this.doSomething = function(){
// do something here
}
}
然后创建一个新实例:
fluffy = new Bunny();
是否可以在“this.doSomething”中写一些东西,这样当我执行预定义的命令时,比如:
fluffy.arr[0]=7;
最终的操作(除了将数组的第 0 个条目从 1 更改为 7 之外,也不是将其更改为 7)就是弹出一个警告,上面写着“复活节快乐!”?
【问题讨论】:
-
@LincolnBergeson 相关问题的答案几乎没有提到
Proxy,这是现在这样做的正确方法。 -
@Alnitak getter 和 setter 没有希望了吗?
-
@LincolnBergeson AFAIK 除了通过
Proxy之外,无法实现对(最初)未定义数组索引属性的访问。 Getter 和 setter 仅适用于您已经知道的属性。
标签: javascript methods javascript-objects