微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Chrome开发者工具中,对象以“构造函数”为前缀是什么意思?

如何解决在Chrome开发者工具中,对象以“构造函数”为前缀是什么意思?

我正在使用ExtJs,并且想获取所有Stores(应用程序的状态)的快照,所以我想我将遍历{{1} }并收集每个Stores属性(只要该值本身不是data ExtJs)。

如果检查开发人员控制台,可以看到我想要的普通旧对象没有前缀Store,但是constructorStores用于处理状态的类)是前缀为ExtJs

constructor prefixes

最初,我认为以constructor为前缀与实例化对象的方式有关,但是我无法使用以下任何一种方式来重现constructor前缀。

constructor

是什么意思?如何检查Chrome开发者控制台是否为对象赋予了> (function() {return {}})() < {} > class test {} < undefined > new test() < test {} > class test2 extends test{} < undefined > new test2() > test2 {} > new (function() {}) < {} > function test3() {} < undefined > new test3() < test3 {} > Object.fromEntries(Array(20).fill(0).map((_,i) => [`${i}_someproperty`,"yeet"])) < {0_someproperty: "yeet",1_someproperty: "yeet",2_someproperty: "yeet",3_someproperty: "yeet",4_someproperty: "yeet", …} > {} < {} > (function(){return {}})() < {} 前缀?

解决方法

我不熟悉ExtJS,但是在我看来,这很可能是某种通用子类创建的结果,该子类使用的函数恰好总是被命名为constructor,例如

function makeExtension(original) {
  // old-style prototype/constructor extension
  function constructor() {
    original.apply(...arguments);
  }
  constructor.prototype = Object.create(original.prototype);
  return constructor;
}

// old-style constructor
function Foo() {}
Foo.prototype.m = function() { console.log("hello world"); };

let Bar = makeExtension(Foo);

鉴于此,对象在控制台/检查器中的类型位置显示为“ constructor”:

> new Bar()
< ▸ constructor {}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。