gpt4 book ai didi

javascript - 如何为 Chrome 开发工具中的自定义类计算 javascript 类名?

转载 作者:搜寻专家 更新时间:2023-11-01 04:26:39 24 4
gpt4 key购买 nike

我正在尝试确定在 javascript 中生成类名的规则。我将此脚本粘贴到 Chrome 开发工具控制台中:

var obj = { 
Constr : function() { }
};

var obj2 = obj;
console.log(new obj.Constr());
console.log(new obj2.Constr());

obj2.Constr2 = function() { };
console.log(new obj.Constr2());
console.log(new obj2.Constr2());

这是控制台中的结果:

obj.Constr
obj.Constr
obj2.Constr2
obj2.Constr2

类名似乎是由构造函数最初赋值给的变量决定的。我正在寻找 CDT 用于生成此名称的精确规则。另外,这个名称是否与 Google Closure Compiler 识别的名称相同?

我已经尝试查看是否可以在 Firebug 中重现类似的行为,但我似乎无法在控制台中打印出类名。作为次要问题,有人知道如何在 Firebug 中看到这个吗?

最佳答案

Javascript 中没有类,因为它是基于原型(prototype)的 OOP,而不是基于类的。 Chrome 显然做了一些推导,以便在控制台中打印对象的一些描述,但这不是标准的 Javascript——在标准中,对象没有命名类,你无法弄清楚对象所属的类的名称,因为唯一的继承是通过实际的 [[Prototype]] 内部伪属性完成的,它本身也是一个对象,没有名称或“类”。通常,您可能会通过查看 object.__proto__.constructor.name 推断出类似于类名的内容,这将返回函数的名称,该函数是从中实例化对象的构造函数; 但是这个函数可能是匿名的,或者您的浏览器可能不支持非标准的__proto__ 属性,或者对象的原型(prototype)可能不包含对其构造函数的正确引用。通常,你无法知道 JS 中对象的“类”;您只能测试后代(object instanceof Constructor),但这仍然是根据对象原型(prototype)中的 constructor 属性实现的,可能不正确。

关于javascript - 如何为 Chrome 开发工具中的自定义类计算 javascript 类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12231139/

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