这是angularjs bug的安全修复吗?

时间:2014-10-09 10:53:46

标签: javascript jquery angularjs

我刚遇到这个错误:

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

0 个答案:

没有答案