使用Object.keys获取用于创建构造函数实例的属性,然后打印继承的属性
use Object.keys to get properties which are used to create instances of a constructor then prints inherited properties
我正在尝试使用Object.keys
发送对象的属性,并将其存储在变量中。所以现在我有一个包含两个元素的数组,这两个元素应该是Person类的实例,并继承了name属性。但是arr[0]给了我p1
,但相当于p1.name
的arr[0].name
没有打印它的名称,但它不应该打印吗??我想知道幕后发生了什么??谢谢
(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)
相关文章:
- 将display属性更改为visible flicks,然后再次消失
- 从骨干集合筛选模型,然后为这些模型设置属性
- jQuery Deferred and promise-错误:对象没有't支持属性或方法'然后'
- jQuery检查CSS宽度是否大于0,然后添加CSS属性
- 通过属性名称选择每个td,然后给出'未定义'用于属性值
- 为什么我们被教导将document.getElementById(“id”)分配给一个变量,然后将该变量与属性一起使用
- 复制第一个属性's值,然后使用第一个属性的值创建新属性
- 定义一个函数,然后为其添加属性
- 根据属性值创建多个对象数组,然后遍历每个数组
- 找到特定的属性,然后推送到一个数组
- 按类和自定义属性值查找元素(然后更新它)
- 类型错误属性 然后是未定义的
- 使用 toastr 获取“无法读取未定义的属性'然后'”
- 我需要在两个模型(rails)之间创建一个新关系,然后通过javascript更改关系模型的属性
- JavaScript 如果然后无法读取属性
- 将光标聚焦在 HTML 上创建,然后在 Lightswitch 2013 中的属性字段之间移动光标
- javascript或jquery获取给定元素的背景位置属性,然后动态地+/-
- 获取对象中的属性数量,然后在for循环中获取最后一个属性
- Javascript-使用对象名称的数组,然后使用循环获取属性
- 属性 .然后未定义的错误