对象上的Javascript数组表示法
我想知道这在幕后是如何运作的: JQuery如何设置对象上的Javascript数组表示法,javascript,jquery,Javascript,Jquery,我想知道这在幕后是如何运作的: JQuery如何设置foo[0]以执行get函数。我看了一下源代码,但发现的是: get: function( num ) { return num != null ? // Return just the one element from the set ( num < 0 ? this[ num + this.length ] : this[ num ] ) : // Return all th
foo[0]
以执行get
函数。我看了一下源代码,但发现的是:
get: function( num ) {
return num != null ?
// Return just the one element from the set
( num < 0 ? this[ num + this.length ] : this[ num ] ) :
// Return all the elements in a clean array
slice.call( this );
},
行为与
myObj.get(0);
查看JQuery时,这必须是可能的,因为它不只是手动为每个索引设置
this[0]=“whatever”
,而是以某种方式执行.get函数。有没有一种方法可以说,无论何时进行数组查找,都要执行一个函数 这是因为在jQuery中0
是保存domeElement的对象中属性的键。这意味着您实际上是通过键访问对象,而不是通过索引访问数组。get()
方法只是该访问器的包装器。下面是一个工作示例:
var obj={
“0”:“你好!”,
获取:函数(键){
返回此[键];
}
};
console.log(obj[0]);
控制台日志(obj.get(0))代码>
JQuery如何设置foo[0]来执行get函数
相反<代码>获取(0)
只需调用[0]
jQuery创建了一个类似于数组的元素对象堆栈,因此,为了扩展一个元素对象,可以使用数组语法,例如,
[0]
在意识到jQuery方法对我不起作用后,我想在调用中执行代码,我找到了一个使用代理对象的解决方案:
var p = new Proxy(Obj, {
get(target, name, receiver) {
console.log(name);
return name;
}
});
p[0]
将打印0
并允许在函数内执行代码。我不确定这是否适用于所有浏览器,但这适用于节点项目
var p = new Proxy(Obj, {
get(target, name, receiver) {
console.log(name);
return name;
}
});