javascript – constructor.name在Internet Explorer中未定义

前端之家收集整理的这篇文章主要介绍了javascript – constructor.name在Internet Explorer中未定义前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的IE调试工作在今天结束,发现constructor.name是未定义的.

我创建了以下简单的代码来重现问题:

({}).constructor.name === undefined // => true

有没有解决办法使这项工作?

也许可以覆盖原型?

如果可能,我不想更改语法,因为更改将是重要的.

JSFIDDLE

解决方法

问题在于Internet Explorer中不支持功能对象的name属性.该属性是非标准的(直到ECMAScript 6,至少),所以这并不完全令人惊讶.

没有一个完全可靠的解决方法,所以如果可能,我建议尽量不要这样做.但是,您可能可以从函数的字符串表示中提取名称.这里有几个链接来处理这个,我从一个快速搜索

> Javascript get Function Name?
> https://gist.github.com/dfkaye/6384439

更新

从注释中可以看出,问题作者的目标是测试变量是否是由对象构造函数创建的普通对象的引用.一个可靠的方式来做这个变量a是

Object.prototype.toString.call(a) == "[object Object]"

有关更多信息,请推荐Angus Croll撰写的以下页面

http://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/

猜你在找的JavaScript相关文章