这是我第二次通过codecademy中的Javascript课程作为复习,并且有一些我不太了解的东西。在名为“联系人列表项目”的练习中,以下内容应该是查看示例课程所提供的结束代码。
var friends = {};
friends.bill = {
firstName: "Bill",
lastName: "Gates",
number: "(206) 555-5555",
address: ['One Microsoft Way','Redmond','WA','98052']
};
friends.steve = {
firstName: "Steve",
lastName: "Jobs",
number: "(408) 555-5555",
address: ['1 Infinite Loop','Cupertino','CA','95014']
};
var list = function(obj) {
for(var prop in obj) {
console.log(prop);
}
};
var search = function(name) {
for(var prop in friends) {
if(friends[prop].firstName === name) {
console.log(friends[prop]);
return friends[prop];
}
}
};
list(friends);
search("Steve");
代码在控制台中生成以下结果:
bill
steve
{ firstName: 'Steve',
lastName: 'Jobs',
number: '(408) 555-5555',
address: [ '1 Infinite Loop', 'Cupertino', 'CA', '95014' ] }
{"firstName":"Steve","lastName":"Jobs","number":"(408) 555-5555","address":["1 Infinite Loop","Cupertino","CA","95014"]}
for / in循环究竟是如何工作的?我知道这只是一个占位符,但为什么名单(朋友)只想出'账单'和'史蒂夫'?是不是应该遍历对象的所有属性?
答案 0 :(得分:0)
它正在运行friends
对象的所有属性。此对象只有2个属性bill
和steve
,如下所示:
var friends = {};
friends.bill = {
...
};
friends.steve = {
...
};
这两个中的所有子属性都与初始for / in循环无关。 search
函数会在找到firstName === 'steve'
答案 1 :(得分:0)
我认为深入了解Object.defineProperty()
所描述的here将清除您对property
,key
& value
。
Object.defineProperty(obj, 'key', {
enumerable: false,
configurable: false,
writable: false,
value: 'static'
});