阿里巴巴js面试题3

xiaoxiao2021-02-28  93

该题难度系数: ★★★

考查的技术点: 1). this  2). 闭包

题目如下:

var name = "A" var object = { name: "B", getNameFunc: function () { return function () { return this.name } } } console.log(object.getNameFunc()()) var name2 = "A" var object2 = { name2: "B", getNameFunc: function () { var that = this return function () { return that.name2 } } } console.log(object2.getNameFunc()())

运行结果:

接下来我们分析一下:

第一道题:object.getNameFunc()里面有一个闭包,返回的是一个函数,然后加个()就表示函数的调用了。而此时是默认的执行方式,this代表window,那么name就是全局变量‘A’;

第二道题:注意到,里面先对this进行缓存起来,this代表object,当object.getNameFunc()返回一个函数时,调用就返回的是一个object的name2属性值'B'。

转载请注明原文地址: https://www.6miu.com/read-54255.html

最新回复(0)