访问 angular.forEach 中的父属性

Access parent properties in angular.forEach

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

var d={
  a:"firstName",
  b:"lastName"
};

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

var A=Object.create(d);

console.log(A.a);//returns "firstName"
console.log(A.b);//returns "lastName"

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

但是与 angular.forEach 一起使用时几乎没有问题。

我想使用 angular.forEach 解析所有属性,包括继承的属性。如何遍历包含父属性的对象?

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

在 google chrome 的先前版本中,另请参阅继承属性。但是更新到版本43.0.2357.52后,它在控制台中没有显示继承的属性

我不知道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 访问自己的属性和继承的属性。

 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

上找到了这个例子

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

var A = angular.copy(d);

angular.forEach 不会迭代继承的属性,也没有任何函数可以迭代。

... It is worth noting that .forEach does not iterate over inherited properties because it filters using the hasOwnProperty method... angular 1.4

您需要实现自己的功能。