访问对象属性的问题
来源:5-5 方法的调用
饭团团团团
2019-08-17 23:06:56
var op = {
key: function(num1,num2){
return num1*num2;
},
add: function(num1,num2){
return num1+num2;
}
}
key = 'add'; // ‘add’ 不是字符串吗为什么代表了op对象里面的方法?为什么不用'.'或者[]就可以访问?
console.log(key); // 输出是字符串'add'
console.log(op[key]); // 输出op对象的add函数
console.log(op['key']); //输出op对象的key函数
console.log(op['add']); //输出op对象的add函数
console.log(op[key](1,2));
console.log(op['key'](1,2));
//为什么加引号是对象自身的属性,不加引号是全局的
//为什么在全局作用域可以把'add'字符串赋值给key,并且key打印出来是字符串add,op对象访问就是函数可以调用了呢?问题写注释里了,懵圈了
1回答
好帮手慕慕子
2019-08-18
同学你好,
第一个打印的key是你在op对象之外定义的全局变量key

因为不加引号, key表示变量, 值为add, 加了引号之后表示字符串key

因为op[key] 的写法等于op.add, 在op对象上有对应的add方法, 所以可以访问当op对象上的方法,然后就可以调用这个方法。
假如你访问的是对象上没有的方法, 调用就会报错的


综上所述, 同学不用纠结,就记住.和[]都可以访问对象上的属性和方法, 但是[]可以通过变量定义的值来访问对象上的属性和方法哦
如果帮助到了你, 欢迎采纳!
祝学习愉快~~~~
相似问题