Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t获取Javascript对象中数组/对象的长度_Javascript_Arrays_Object_Variable Length Array - Fatal编程技术网

Can';t获取Javascript对象中数组/对象的长度

Can';t获取Javascript对象中数组/对象的长度,javascript,arrays,object,variable-length-array,Javascript,Arrays,Object,Variable Length Array,box={ 限制框:0, 框:document.getElementsByClassName('box'), 大小:this.box.length,//这个不行 orSize:Object.keys(this.box).length,//和这个一样 前置框:函数(){ 路缘石-=1 }, nexBox:function(){ 路缘石+=1 } } console.log(box.box.length)//这个很好用 ... ... ... ... 文档。getElementsByClassNa

box={
限制框:0,
框:document.getElementsByClassName('box'),
大小:this.box.length,//这个不行
orSize:Object.keys(this.box).length,//和这个一样
前置框:函数(){
路缘石-=1
},
nexBox:function(){
路缘石+=1
}
}
console.log(box.box.length)//这个很好用

...
...
...
...

文档。getElementsByClassName('box')
不正确,在本例中返回null。该函数返回元素,这些元素在第一个参数中以空格分隔的字符串形式指定了所有类。您可以使用
文档。querySelectorAll('.box')
文档。getElementsByClassName('box')
不正确,在这种情况下返回null。该函数返回元素,这些元素在第一个参数中以空格分隔的字符串形式指定了所有类。您可以使用
document.querySelectorAll('.box')
主要原因是您仍在初始化box对象,因此无法访问此对象。换句话说,在您使用此工具时,您的对象尚未完全成形

您可以做的是创建一个函数并返回它

boxes: function() {
  return function() { return this.boxes.length; },
}
我创建了一个有改进的JSFIDLE


还要注意,当DOM就绪时,您需要运行方法。

主要原因是您仍在初始化Box对象,因此无法访问它。换句话说,在您使用此工具时,您的对象尚未完全成形

您可以做的是创建一个函数并返回它

boxes: function() {
  return function() { return this.boxes.length; },
}
我创建了一个有改进的JSFIDLE


还请注意,当DOM就绪时,您需要运行方法。

javascript中的此
仅具有函数作用域,即它指向当前正在执行的函数所在的对象。如果您没有这样的对象,即您处于顶层,则
在浏览器中通常指向
窗口
对象

因此,在构建对象时,
这个
实际上不是您的对象,而是其他对象

这样的代码可以工作:

const person = {
  name: "Wekoslav",
  surname: "Stefanovski",
  getName: function(){
    return this.name + " " + this.surname;
  }
}

console.log(person.getName());
因为我只是在定义了
getName
函数之后才调用它,在该函数中,
这个
绑定到
个人
。但是,该代码:

const person = {
  name: "Wekoslav",
  surname: "Stefanovski",
  fullName: this.name + " " + this.surname;
}

console.log(person.fullName);

不会起作用,因为这是绑定到执行
const person
行之前的任何内容。

此javascript中的
仅具有函数作用域,即它指向当前执行函数所在的对象。如果您没有这样的对象,即您处于顶层,则
在浏览器中通常指向
窗口
对象

因此,在构建对象时,
这个
实际上不是您的对象,而是其他对象

这样的代码可以工作:

const person = {
  name: "Wekoslav",
  surname: "Stefanovski",
  getName: function(){
    return this.name + " " + this.surname;
  }
}

console.log(person.getName());
因为我只是在定义了
getName
函数之后才调用它,在该函数中,
这个
绑定到
个人
。但是,该代码:

const person = {
  name: "Wekoslav",
  surname: "Stefanovski",
  fullName: this.name + " " + this.surname;
}

console.log(person.fullName);

不起作用,因为它绑定到执行
const person
行之前的任何内容。

因为
未指向
对象
指向窗口对象,因为
未指向
对象
this
指向窗口objectdude,它返回一个HTML集合,它是一个对象,所以他所做的没有错,只是在对象内部调用了
this
initialization@Roljhon您是否在控制台中测试了document.getElementsByClassName('box')?它返回null.dude,它没有:)如果您从上面的fiddle测试它,可能您正在iframe之外执行代码。dude,它返回一个HTML集合,它是一个对象,因此他所做的没有任何错误,只是他在对象内部调用
这个
initialization@Roljhon您是否在控制台中测试了document.getElementsByClassName('box')
?它返回null.dude,它没有:)如果您从上面的fiddle测试它,可能您正在iframe之外执行代码。这是行不通的。同样地,
不会指向框对象,它可能是未定义的对象或窗口对象,如果您尝试了它,您将知道已编辑:Sweko是正确的是,您将需要一个常规函数,因为胖箭头没有定义它自己的
@Sweko忘记了这一点:)太棒了!这是行不通的。同样地,
不会指向框对象,它可能是未定义的对象或窗口对象,如果您尝试了它,您将知道已编辑:Sweko是正确的是,您将需要一个常规函数,因为胖箭头没有定义它自己的
@Sweko忘记了这一点:)太棒了!