JavaScript的阵列上的getter / setter? [英] Getter/setter on javascript array?
本文介绍了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屋!
查看全文