访问angular.forEach中的父属性

时间:2015-05-10 12:41:30

标签: javascript angularjs javascript-objects

在这里,我创建了一个对象说d。

new

现在我想创建另一个对象A,它继承了d。

的属性
new

但是当我使用时     console.log(A); //返回空对象,因为它不显示继承的属性。

但是在使用angular.forEach时它没有什么问题。

我想使用angular.forEach来解析包括继承属性在内的所有属性。如何循环包括父属性的对象?

我必须使用Object.create,因为父对象是动态的,即它将来可能包含更多对象,并且这些属性将自动出现在子对象中。这里我不能使用angular.copy ,因为它会进行深层复制并打破父对象之间的关系。

在以前版本的Google Chrome中,请参阅继承的属性。但在更新到版本43.0.2357.52后,它没有在控制台中显示继承的属性

4 个答案:

答案 0 :(得分:1)

我不知道Angular是否具有特定功能(我没有看到),但您可以使用JavaScript的for-in循环来查看:

var key;
for (key in d) {
    // key will be "firstName" on one pass and "lastName" on another
    // there IS NO guarantee of order
}

for-in访问自己的属性和继承的属性。

答案 1 :(得分:1)

您应该使用angular.copy()来执行此操作:

var A = angular.copy(d);

答案 2 :(得分:0)

 var values = {name: 'misko', gender: 'male'};
var log = [];
angular.forEach(values, function(value, key) {
  this.push(key + ': ' + value);
}, log);
expect(log).toEqual(['name: misko', 'gender: male']);

我在documentation page

上找到了这个例子

答案 3 :(得分:0)

angular.forEach不会迭代继承的属性,也没有任何执行此功能的函数。

  

...值得注意的是.forEach不会迭代继承的属性,因为它使用hasOwnProperty方法进行过滤... angular 1.4

您需要实现自己的功能。