我刚遇到这个错误:
https://github.com/angular/angular.js/issues/5201
forEach函数在角度1.2.3版本的第295行引发此错误。 Trace导致第1248行的angularInit函数的forEach(element.attributes,...)调用。
问题是在IE8中,element.attributes属性是[object DispHTMLAttributeCollection]的实例,它不支持hasOwnPropertyMethod,因此是异常。
似乎在其他IE版本中不会出现此问题。
我正在使用AngularJS v1.2.5但收到同样的问题。
我正在考虑使用this fix:
if (key != 'prototype' && key != 'length' && key != 'name' && (obj.hasOwnProperty && obj.hasOwnProperty(key) || Object.prototype.hasOwnProperty.call(obj, key))) {
而不是
if (key != 'prototype' && key != 'length' && key != 'name' && obj.hasOwnProperty(key)) {
这是一个安全的解决方案吗?我不明白为什么将obj.hasOwnProperty(key)
添加到AND条件以及Object.prototype.hasOwnProperty.call(obj, key)
实现了什么?
Object.prototype.hasOwnProperty.call(obj, key)
是否等同于obj.hasOwnProperty
?