此属性检索代码有什么问题
What's wrong with this property retrieval code?
var testobj = {
whatever: "jeremy",
alsotest: "wow"
};
for(name in testobj){
document.writeln(name + ":" + testobj.name + "'n");
}
我从浏览器中得到的是
whatever:undefined alsotest:undefined
有两件意想不到的事情:第一,为什么值未定义?第二,为什么根本不打印换行符?
谁能为我解释一下?
在您
的情况下,您正在尝试从testobj
中获取名称为"name"
的不存在的属性。
您应该改用方括号表示法:testobj[name]
。
使用.
访问属性时,*
必须提供与属性名称匹配的标识符。通过使用testobj.name
,您将访问名为 name
(不存在(的属性。
如果要使用包含与属性名称匹配的字符串的变量,则必须使用方括号表示法。
testobj[name]
可以使用方括号表示法中的任何字符串。
testobj["name"] === testobj.name;
function foo() {
return "nam";
}
testobj[foo() + "e"] === testobj.name;
*
"必须"在技术上是不正确的。可以使用eval
(或等效的东西(,但这种方式是疯狂的。
相关文章:
- 我不知道我的编码有什么问题.(JavaScript)
- 我的流星路线出了什么问题
- 此nodeValue替换代码有什么问题
- 这个正则表达式的日期/时间有什么问题
- 我的CSS/Javascript下拉菜单测试代码出了什么问题
- 这个代码出了什么问题?(Jquery)
- 下面的Reg表达式出了什么问题
- 鼠标事件,我的代码出了什么问题
- 这个javascript语法有什么问题
- 动态创建foreignGroup并将其添加到svg中有什么问题
- 此代码中动态生成选择框有什么问题
- 我的javascript有什么问题?.className
- 这个 ajax.js 代码有什么问题
- JS代码有什么问题,让我知道代码是否可以改进
- 我的 Browserify JavaScript 代码有什么问题
- 图像上传功能将++(+1)副本添加到下一次上传.出了什么问题或如何重置“选定图像”
- 使用 Javascript 动态删除行.我的代码有什么问题
- AngularJS:这个注入我的控制器有什么问题
- 这个jQuery if语句有什么问题
- JavaScript:有人能告诉我我的代码出了什么问题吗?