使用点和文字表示法构造的 JavaScript 对象在调用时的行为如何
how do javascript objects constructed with both dot and literal notation behave when called?
在运行下面的代码时,没有任何函数调用,我会立即得到这个输出
["1122","3rd St","Seattle","WA","92838"]
解决此代码的最接近的线程是需要解释:在联系人列表中具有对象的组织(Javascript,Codecademy),但它并没有完全解决我的担忧。
我确信我向对象添加键、值对的方式以某种方式产生了这个输出,但我似乎无法解释为什么,尤其是在运行代码时,没有包含函数调用。
当实际尝试调用搜索(例如search("steve"))时,它会失败,但它可以在search("bill")上工作。我认为它可能与javascript控制台有关,但是我使用Chrome的控制台进行了检查,结果相同。 任何帮助将不胜感激。
var friends={};
friends.bill = {};
friends.steve={};
friends.bill["firstName"]="Bill";
friends.bill["lastName"]="Gates";
friends.bill.number="333.222.3937";
friends.steve["firstName"]="Steve";
friends.steve.lastName="Ballmer";
friends.steve["number"]="829.383.3939";
friends.bill["number"]="232.8392.2382"
friends.bill.address=['5353','Cook Ave','Bellevue','CA','94838']
friends.steve.address=['1122','3rd St','Seattle','WA','92838']
var search=function(name)
{
for(var i in friends){
if (name==i["firstName"])
{
console.log(friends[i])
return friends[i]
}
else{
return "no match"
}
}
}
尝试更改:
for(var i in friends){
if (name==i["firstName"])
...
自
for(var i in friends){
if (name == friends[i]["firstName"])
...
你的意思是这样的:
for(var i in friends){
if( name == i ) { //i would be either "bill" or "steve" and check against name variable
console.log("Data for:" + i + " firstname is:" + friends[i]["firstName"]);
}
}
您看到的输出是:
["1122","3rd St","Seattle","WA","92838"]
因为它是当前存储在 $_ 中的内容(大多数基于浏览器的 JS 解释器会在提示符上吐出 $_ 中的内容)。
$_ 是最后一个计算表达式的值,在您的情况下为:
friends.steve.address=['1122','3rd St','Seattle','WA','92838']
"var 搜索..."实际上是一个声明,因此不会存储在 $_ 中。
此外,您的搜索功能可能如下所示:
var search = function(name) {
for(var i in friends) {
if (name.toLowerCase() == friends[i]["firstName"].toLowerCase()) {
console.log(friends[i])
return friends[i]
}
}
return "no match";
};
@cherniv可能会在将回报移出时击败我。
相关文章:
- JQuery Deferred Ajax,将结果保存在调用对象中
- 无法从JavaScript中的函数调用对象属性
- 在Javascript中调用对象方法时不是函数类型错误
- 正在调用对象中设置的匿名函数,但未得到预期结果
- 为什么需要“this”来调用对象内部的函数
- 如何从onClick事件调用对象函数
- 是否可以在不加对象名称前缀的情况下调用对象的函数
- 对象-在定义对象之前先调用对象
- console.log表示,当我调用对象的任何成员时,对象都是未定义的
- 正在调用对象的方法
- console.log是否调用对象的toString方法
- Javascript”;无效的调用对象“;xml错误
- 如何在javascript中调用对象键(codecademy)
- 如果我丢失了调用对象,如何杀死 setInterval()/setTimout()
- 如何在对象生成器外部调用对象属性值
- JavaScript:动态调用对象内的函数
- 如何动态加载 JavaScript 对象或调用对象方法
- IE9 在 iframe 中打印 PDF 时出现“无效调用对象”
- 在方法调用对象之外访问变量而不使它们全局化(可能吗?
- Javascript - 在对象中调用对象的方法,给出错误:“对象没有方法getStartPoint”