我对原生 javascript 调用有疑问。
我有一个类(class):
x = function(arr) { this.arr = arr; return this; }
x.prototype.toArray = function() {
return this.arr;
};
x.prototype.test = function() { alert('but i m object too!'); };
当我打电话时:
var test = new x(['a','b','c']);
alert(test[0]);
alert(test.test());
需要得到结果“a”和“但我也反对!”对话框。
我想将此功能用作语法糖,就像在将选择器用作数组后返回 DOM 元素时在核心中使用 jquery 一样。如何实现?
更新:
感谢您的回答,但我需要在 github 上的 jquery 代码 blob 中的证明。
最佳答案
数组只不过是一个以特殊方式处理数字属性的对象。您必须将数组的每个元素复制到实例,使用元素的索引作为属性名称。您还应该设置 length
属性,使其成为真正的“类数组”对象。
var X = function(arr) {
for (var i = 0, l = arr.length; i < l; i++) {
this[i] = arr[i];
}
this.length = arr.length;
};
var x = new X(['a', 'b', 'c']);
alert(x[0]);
关于Javascript:如何检测数组调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20509596/