访问对象属性的问题
来源: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对象上的方法,然后就可以调用这个方法。
假如你访问的是对象上没有的方法, 调用就会报错的
综上所述, 同学不用纠结,就记住.和[]都可以访问对象上的属性和方法, 但是[]可以通过变量定义的值来访问对象上的属性和方法哦
如果帮助到了你, 欢迎采纳!
祝学习愉快~~~~
相似问题