有一个奇怪的问题-由于某种原因,call()
仅当在函数内部返回该方法时,使用该方法访问该属性内的父对象才有效。
为什么在第二个示例中我不能访问MyObject,但是在第一个示例中我可以访问MyObject?
我需要进行第二次工作,因为我不想一直在循环内调用函数,因为它很慢而且看起来很糟糕。
我现在所拥有的:
var MyObject = {
"selectorArray": ['[id*="example"]','[class*="example"]'],
"all": function() {
return Array.prototype.slice.call(document.querySelectorAll(MyObject.selectorArray.join()));
},
"somemethod": function () {
for (var i = 0; i < MyObject.all().length; i++) {
MyObject.all()[i] // do something etc
}
}
.. I need to use all() in loops other methods also
}
我想要什么(更快更好看)
var MyObject = {
"selectorArray": ['[id*="example"]','[class*="example"]'],
"all": Array.prototype.slice.call(document.querySelectorAll(MyObject.selectorArray.join())),
"somemethod": function () {
for (var i = 0; i < MyObject.all.length; i++) {
MyObject.all[i] // do something etc
}
}
.. I need to use all in loops other methods also
}
MyObject
对象文字被评估时不存在。您不能用它MyObject.anything
来定义MyObject.all
文字中的值,因为您所指的是尚未创建的对象的属性。相反,您可以从文字中提取所需的值:
var selectorArray = ['[id*="example"]','[class*="example"]'];
var MyObject = {
"selectorArray": selectorArray,
"all": Array.prototype.slice.call(document.querySelectorAll(selectorArray.join())),
"somemethod": function () {
for (var i = 0; i < MyObject.all.length; i++) {
MyObject.all[i] // do something etc
}
}
...
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句