我想知道为什么以下类的输出之间存在差异。
我尝试使用以下代码在控制台中获取类值。对于一个特殊情况(最后一个控制台),我想知道这是如何返回该值的。
let rectangle = class{
constructor(name,num){
this.name =name;
this.num = num;
}
}
let rect = new rectangle();
console.log("bantai",rect);
//output: rectangle { name: undefined, num: undefined }
let rectangle3 = class rectangle2{
constructor(model, version){
this.model = model;
this.version = version;
}
}
var abh = new rectangle3();
console.log(abh);
//output:rectangle2 { model: undefined, version: undefined }
console.log(rectangle3);
//output:[Function: rectangle2]
我想知道最后一个控制台console.log(rectangle3)的值为什么将这个值作为带有一个元素的数组作为返回值,即[Function:angle2]
答案 0 :(得分:2)
为什么要将此值作为带有一个元素的数组返回,即[Function:rectangular2]?
那不是数组。这就是JavaScript中的对象如何记录的方式:
console.log(
{}, // [Object object]
new Map, // [Object Map]
function() {}, // [Function]
);
答案 1 :(得分:1)
为什么它将这个值作为带有一个元素的数组返回,即
[Function: rectangle2]
它不记录阵列,只是您所使用的任何环境的奇怪控制台格式。这些都不是有效的JS语法,不要指望括号引用数组。您可以尝试记录包含函数的实际数组并比较输出。
答案 2 :(得分:0)
在上一个中,您正在记录该函数,但未调用它。在内部,类只是函数。当您调用一个时,它将创建该类的一个实例。如果您引用一个而不调用它,那么您引用的是 function 而不是实例。考虑以下类似示例:
function doSomething() {
return 4;
}
console.log(doSomething()); // Says 4
console.log(doSomething); // Says it's a function