如何在 Javascript 中动态设置在 Chrome 中显示的函数/对象名称

新手上路,请多包涵

这是谷歌 Chrome 调试器一直困扰我的问题,我想知道是否有办法解决它。

我正在开发一个大型 Javascript 应用程序,使用大量面向对象的 JS(使用 Joose 框架),当我调试我的代码时,我的所有类都被赋予了一个无意义的初始显示值。要了解我的意思,请在 Chrome 控制台中尝试以下操作:

 var F = function () {};
var myObj = new F();

console.log(myObj);

输出应该是一行,您可以展开它以查看 myObj 的所有属性,但您首先看到的只是 ▶ F

我的问题是,由于我的 OO 框架, 实例化的每个对象都具有相同的“名称” 。它看起来对此负责的代码是这样的:

 getMutableCopy : function (object) {
    var f = function () {};
    f.prototype = object;
    return new f();
}

这意味着在调试器中,初始视图始终是 ▶ f

现在,我真的不想改变任何有关 Joose 如何 实例化对象 (getMutableCopy…?) 的内容,但如果我可以添加一些东西以便我可以提供自己的名字,那就太好了。

我看过的一些东西,但无处可去:

 > function foo {}
> foo.name
  "foo"
> foo.name = "bar"
  "bar"
> foo.name
  "foo"    // <-- looks like it is read only

原文由 nickf 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 558
1 个回答
Object.defineProperty(fn, "name", { value: "New Name" });

可以解决问题,并且是性能最高的解决方案。也没有评估。

原文由 Piercey4 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题