gpt4 book ai didi

javascript - Chrome 和 Firefox 如何在控制台中打印对象的类名?

转载 作者:行者123 更新时间:2023-11-29 14:51:23 28 4
gpt4 key购买 nike

如果我使用“传统的”Javascript 类创建 Foo 类,chrome 和 Firefox 都会在控制台上打印 Foo 实例时显示 Foo 名称:

function Foo(){
this.x = 10;
}

console.log(new Foo());
// Foo {x: 10}

另一方面,如果我使用手动原型(prototype)继承,那么在调试时我得不到有用的名称

function mkClass(init, proto){
return function(/**/){
var obj = Object.create(proto);
init.apply(obj, arguments);
return obj;
}
}

var Bar = mkClass(function(){ this.x = 10 }, {});

console.log(Bar());
// Object {x: 10}

有没有办法让通过我的原型(prototype)系统创建的类在控制台上打印时显示它们的名字?到目前为止,我能想到的唯一方法是一个丑陋的 hack 滥用 eval 来给出不同的mkClass 返回的当前匿名构造函数的名称。

最佳答案

好像FF和chrome只打印了constructor property .尝试将其设置为有意义的值,您应该会看到结果。

function mkClass(init, proto){
proto.constructor = {name: "Foo"};
return function(/**/){
var obj = Object.create(proto);
init.apply(obj, arguments);
return obj;
}
}

关于javascript - Chrome 和 Firefox 如何在控制台中打印对象的类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25141170/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com