JavaScript的阵列上的getter / setter? [英] Getter/setter on javascript array?

查看:121
本文介绍了JavaScript的阵列上的getter / setter?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有办法得到一个阵列上的get / set的行为吗?我想是这样的:

  VAR ARR = [一,二,三化];
VAR _arr =新的Array();对于(VAR I = 0; I< arr.length;我++){
改编[I] .__ defineGetter __('值',
函数(指数){
    //做一点事
    返回_arr [指数]
});
改编[I] .__ defineSetter __('值',
功能(索引,VAL){
    //做一点事
    _arr [指数] = VAL;
});
};


解决方案

数组访问是正常属性访问没有什么不同。 数组[0] 办法数组[0] ,所以你可以定义名称的属性 0 并通过拦截访问第一数组项。

不过,这确实使不切实际为所有,但短,更多或更少的固定长度的阵列。你不能对所有一气呵成碰巧是整数所有名称中定义的属性。

Is there a way to get a get/set behaviour on an array? I imagine something like this:

var arr = ['one', 'two', 'three'];   
var _arr = new Array();

for (var i=0; i < arr.length; i++) {
arr[i].__defineGetter__('value',
function(index) {
    //Do something
    return _arr[index];
});
arr[i].__defineSetter__('value',
function(index, val) {
    //Do something
    _arr[index] = val;
});
};

解决方案

Array access is no different to normal property access. array[0] means array['0'], so you can define a property with name '0' and intercept access to the first array item through that.

However, that does make it impractical for all but short, more-or-less-fixed-length Arrays. You can't define a property for "all names that happen to be integers" all in one go.

这篇关于JavaScript的阵列上的getter / setter?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆