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忘记了这一点:)太棒了!