为什么IE8中的一些内置函数不是Function的实例
Why some built-in functions in IE8 are not instances of Function?
我注意到alert和console.log在IE8中不像正常的JavaScript对象那样工作。有人对此有什么解释吗?
Good:
escape instanceof Function; // => true
escape.call; // => function call() { }
typeof escape; // => "function"
escape.test = 1; // => 1
Bad:
alert instanceof Function; // => false
alert.call; // => undefined
typeof alert; // => "object"
alert.constructor; // => undefined
alert.test = 1; // => Object doesn't support this property or method
在此找到:http://perfectionkills.com/whats-wrong-with-extending-the-dom/
ecma - 262 3。艾德:
宿主对象可以用any实现这些内部方法依赖于实现的行为,也可能是宿主对象只实现部分内部方法,不实现其他方法。
内部方法规范讨论的是[[Get]]、[[Put]]、[[Delete]]等。注意它是如何说内部方法的行为是依赖于实现的。这意味着宿主对象在调用[[Get]]方法时抛出错误是绝对正常的。
所以,IE并没有违反规范,行为是一致的,所有不是JavaScript语言一部分的内置函数都是这样工作的。你不能给它们分配属性,它们没有原型和构造函数。
例子:
alert;
scrollTo;
document.getElementById;
location.reload;
setTimeout;
相关文章:
- ES6构造函数返回基类的实例
- 直接在函数声明上使用function.prototype.bind
- jQuery:.click(function(){(element),collapse('show',f
- KnockoutJS-组件-多个实例
- 为什么无法在TypeScript中导出类实例
- 如何在GoogleWeb工具包(GWT)中从JSNI调用接口(实例化)
- fluxxor向一个flux实例添加一组以上的操作
- 使用jQuery获取Dropzone实例/对象
- "实例范围”;TypeScript类的getter/setter
- 如何在速度模板中获取LiferayPortlet实例id
- 同一项怎么可能在一个实例中未定义,却在另一个实例上定义
- 实例创建(JS)
- 如果连接类型为none,则Javascript Function Only警报
- 显示模块模式在Knockout中设置模型的新实例
- 如何获取单选按钮的多个实例的选定单选按钮值
- 当同一浏览器的两个实例浏览时,Javascript页面如何具有唯一的ID
- 在哪里可以找到RXUI Javascript'时间飞逝'实例
- 创建一个类,该类使用es6类语法将Function对象创建为实例
- 为什么IE8中的一些内置函数不是Function的实例
- 实例方法不是'FUNCTION'