下面代码输入的是什么?
var a = {};b = {key:'b'};c = {key:'c'};a[b] = 123;a[c] = 456;console.log(a[b]);
答案:456
首先a声明为一个对象,b和c也是对象,执行a[b] = 123时,b会转成字符串(调用toString()方法)来当作a对象的键,b.toString() === '[object Object]',所以a对象此时是这样的 a = {'[object Object]':123},同理可知,c也是一个对象,所以a[c] = 456执行,其实也是a['[object Object]'] = 456,把原本的123覆盖了,故输出a[b]也就是输出a['[object Object]'],输出456。
有哪些方法可以改变this的指向?
答案:bind call apply (with)
前三个不用多提,最典型的改变this指向,用另一个对象来调用该函数,with不确定算不算,题目所说有哪些"方法",这个"方法"若是指"函数",那么with是一个