javascript - 使用 Object.keys 获取用于创建构造函数实例的属性,然后打印继承的属性

标签 javascript

我正在尝试使用 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 有两个属性,p1p2,所以 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/

相关文章:

javascript - 如何使用 JQuery 添加 number_field_tag 的值

javascript - Meteor.js 加载模板时出错

javascript - 为什么这个数组没有被传递?

javascript - 列表及其滚动条的不同 z-index

javascript - 如何在选择按钮时使每个图像都不同,不应该出现两个相同的图像

javascript - 我只想在移动设备中使用 JavaScript (snap.js)

javascript - 在 for 循环中使用 jQuery.each 将数组映射到元素文本?

javascript - 如何在帖子列表中首先添加新帖子?

javascript - jQuery 追加如果不存在

javascript - javascript/appcelerator 中的换行