为什么顶级版本不起作用而较低的功能有效?了解如何创建和使用对象,这让我感到困惑。我假设它与我在顶部使用对象的事实有关吗?
var slot1 = {
coffee: '1',
tea: '2',
espresso: '3'
}
function findItem( obj, prop ){
var item = obj + '.' + prop;
console.log(item);
}
findItem( slot1, coffee );
function addNumbs(num1,num2){
var answer = num1+num2;
console.log(answer);
}
addNumbs(4,3);
当我认为我掌握它时,我完全被打了一巴掌!
答案 0 :(得分:2)
问题是咖啡没有在任何范围内定义为变量,你可以使用obj ['coffee']的符号将咖啡作为字符串传递,以使其起作用。或者您可以将其称为slot1.coffee,以便您获得它。
答案 1 :(得分:2)
由于这两行,上层版本不起作用
var item = obj + '.' + prop;
& findItem( slot1, coffee );
当检索对象a.b
或a['b']
足够时a是对象而b是关键
执行+'。'+ b将导致连接,而不是检索值。
在函数传递coffee
中作为字符串,否则它将作为未定义的值传递,因为它将假定咖啡被声明在某处不是
进行此更改
var slot1 = {
coffee: '1',
tea: '2',
espresso: '3'
}
function findItem( obj, prop ){
var item = obj[prop];
document.write('<pre>'+item+'</pre>')
}
findItem( slot1,'coffee' );
答案 2 :(得分:1)
尝试使用slot1.coffee代替咖啡
findItem( slot1, slot1.coffee );
答案 3 :(得分:1)
当你在一个变量使用对象中拥有属性名称时,如数组myObject[property]
其中property是一个变量,其中包含object属性的名称,你想得到它的值。
此外,coffee
不能用作变量,而是字符串"coffee"
或'coffee'
var slot1 = {
coffee: '1',
tea: '2',
espresso: '3'
}
function findItem( obj, prop ){
var item = obj[prop]; // You need to access object property as if object was an array when you have property name in variable.
console.log(item);
}
findItem( slot1, 'coffee' ); // You need coffee as a string here, variable coffee was never defined
function addNumbs(num1,num2){
var answer = num1+num2;
console.log(answer);
}
addNumbs(4,3);