Javascript 访问属性调用()中的对象?
有一个奇怪的问题-出于某种原因,使用Javascript 访问属性调用()中的对象?,javascript,Javascript,有一个奇怪的问题-出于某种原因,使用call()方法访问属性内的父对象仅在函数内返回时有效 为什么在第二个示例中我不能访问MyObject,但在第一个示例中我可以访问 我需要让第二个开始工作,因为我不想经常在循环中调用函数,因为它很慢而且看起来很糟糕 我现在拥有的: var MyObject = { "selectorArray": ['[id*="example"]','[class*="example"]'], "all": function() { return
call()
方法访问属性内的父对象仅在函数内返回时有效
为什么在第二个示例中我不能访问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*=“示例”],'[class*=“示例”],
“全部”:函数(){
返回Array.prototype.slice.call(document.querySelectorAll(MyObject.selectorArray.join());
},
“somemethod”:函数(){
for(var i=0;i
我想要的(更快更好看)
var MyObject={
“selectorArray”:['[id*=“示例”],'[class*=“示例”],
“all”:Array.prototype.slice.call(document.querySelectorAll(MyObject.selectorArray.join()),
“somemethod”:函数(){
for(变量i=0;i 正在计算对象文字时,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
}
}
...
};
var selectorary=['[id*=“example”],'[class*=“example”];
var MyObject={
“selectorArray”:selectorArray,
“all”:Array.prototype.slice.call(document.querySelectorAll(selectorArray.join()),
“somemethod”:函数(){
for(变量i=0;i 正在计算对象文字时,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
}
}
...
};
var selectorary=['[id*=“example”],'[class*=“example”];
var MyObject={
“selectorArray”:selectorArray,
“all”:Array.prototype.slice.call(document.querySelectorAll(selectorArray.join()),
“somemethod”:函数(){
for(变量i=0;i
有趣-那么它为什么在方法内部工作呢?对象初始化后是否返回对象中的所有方法?因为,在创建对象时,“somemethod”:function(){…}
仅将somemethod
属性设置为函数,但函数在调用方法之前不会执行。因此,方法中对MyObject
的引用在调用该方法之前不会被计算。@user2381114它在方法内部工作,因为,当实际需要并调用这些方法时,对象文本已被长期计算和创建。因此,方法内部的代码可以访问实际对象感谢AllInterest的回答和解释-那么它为什么在方法内部工作呢?对象初始化后是否返回对象中的所有方法?因为,在创建对象时,“somemethod”:function(){…}
仅将somemethod
属性设置为函数,但函数在调用方法之前不会执行。因此,方法中对MyObject
的引用在调用该方法之前不会被计算。@user2381114它在方法内部工作,因为,当实际需要并调用这些方法时,对象文本已被长期计算和创建。因此,方法中的代码可以访问实际对象感谢您的回答和解释