javascript - 使用构造函数名称作为类型有多可靠?

标签 javascript types constructor typeof

我最近经常看到这种情况,即使是在编译为 javascript 的新编程语言中,它们也取代了 typeofitem.constructor.name

这有多可靠?有什么优点和缺点吗?(数组类型除外)

这是一个例子

var tmp = [];

typeof tmp // object

tmp.constructor.name // Array

最佳答案

name 作为函数的属性是即将推出的 ES6 标准的一部分,目前 supported by all browsers expect IE 。除此之外,用于内置对象应该没问题。

由用户定义的构造函数 OTOH 创建的对象可能没有正确的构造函数属性集,例如如果使用了继承,但 constructor 的值未设置回构造函数:

Child.prototype = Object.create(Parent.prototype);
// Child.prototype.constructor = Child;

tl;博士:

内置对象和非 IE 浏览器:可靠
第三方用户定义的构造函数或 IE:不可靠

关于javascript - 使用构造函数名称作为类型有多可靠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22681274/

相关文章:

javascript - 使用 jQuery.extend 并将自定义对象作为属性时出现意外行为

javascript - activeform 变量未更新

javascript - THREE.js:模拟 MeshBasicMaterial,同时允许彩色灯光

scala - 无法调用接受并返回特征中自引用参数化类型对象的函数

javascript - $interval 不允许我更新我的前端

javascript - 为什么以及如何 ([![]]+[][[]])[+!+[]+[+[]]] 评估为字母 "i"?

c# - 在 C# 的继承链中创建调用静态方法类型的对象

ruby-on-rails - Ruby (rails) 构造函数调用给出语法错误

dll - 首先调用 DllMain() 还是全局静态对象构造函数?

Java循环引用