作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我使用“传统的”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/
我是一名优秀的程序员,十分优秀!