我最近经常看到这种情况,即使是在编译为 javascript 的新编程语言中,它们也取代了 typeof
与 item.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/