我正在尝试使用 Object.keys
发送对象的属性并将其存储在变量中。所以现在我有一个包含两个元素的数组,这两个元素应该是 Person 类的实例并且具有继承的名称属性。但是 arr[0] 给了我 p1
但是 arr[0].name
相当于 p1.name
没有' t 打印它的名字但不应该吗??我想知道幕后发生了什么?谢谢!!!
(function(){
function Person(name){
this.name=name;
}
var obj={
'p1':new Person('person1'),
'p2':new Person('person2')
};
var arr=Object.keys(obj);
console.log(arr[0].name);
})();
最佳答案
arr
是一个字符串数组,其值为 ["p1", "p2"]
(或者可能 ["p2", "p1"]
,因为对象属性未排序)。因此,arr[0].name
等同于 "p1".name
,这不出所料地给出了 undefined
结果。
Object.keys(obj)
返回一个字符串数组,其中每个字符串都是obj
上的一个属性的名称。这里,obj
有两个属性,p1
和 p2
,所以 Object.keys(obj)
返回一个数组两个字符串。
相反,执行 obj[arr[0]].name
,或者更干净:
var indexZeroPropertyName = arr[0];
var firstObject = obj[indexZeroPropertyName];
console.log(firstObject.name)
关于javascript - 使用 Object.keys 获取用于创建构造函数实例的属性,然后打印继承的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26123781/