社区
community_281
帖子详情
关于JS中的This的一个面试题,求大神解释!!!!
X月亮代表我的心
2015-12-03 10:21:17
function a(xx){this.x=xx;return this};
var x=a(5);var y=a(6);
console.log(x.x);
console.log(y.x);
...全文
1391
8
打赏
收藏
关于JS中的This的一个面试题,求大神解释!!!!
function a(xx){this.x=xx;return this}; var x=a(5);var y=a(6); console.log(x.x); console.log(y.x);
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
疯狂大嘴
2018-01-07
打赏
举报
回复
function a(xx){this.x=xx;return this}; var x=a(5);//此时 x=window,y=undefined var y=a(6);//此时 x=6,y=window console.log(x.x);//实际是6.x,就是undefined console.log(y.x);//实际是window.x,就是6; 要注意的是:var x跟var y是连续执行完后才执行输出的!
飞侠
2016-10-25
打赏
举报
回复
看一下this头脑风暴的测试题:http://www.68kejian.com/app/detail.html?id=80&&c=471
拾•安逸
2016-06-29
打赏
举报
回复
function a(xx){this.x=xx;return this}; var x=a(5);var y=a(6); console.log(x.x); console.log(y.x); 分析如下: 开始执行代码时,会创建一个全局对象window js执行代码过程可以分: 词法分析期和执行期 第一步词法分析包括:形参分析、实参分析、变量声明分析、函数声明分析。分析出的结果作为对象的属性和方法 window对象在词法分析期 得到的属性和方法有: window.a=function(xx){this.x=xx;return this} window.x=undefined window.y=undefined 代码执行期: /*先执行 window.a(5) =》window.a=function(xx){this.x=xx;return this} 函数中的this指代对象是window. 得出window.x=5, 此时,全局域中window.x=undefined 变成 window.x=5 然后 return window 赋值给 x 即:x=window , 最终这x=window这句赋值语句 把 window.x=5改成 window.x=window */ x=a(5); /*先执行 window.a(6) =》window.a=function(xx){this.x=xx;return this} 函数中的this指代对象是window. 得出window.x=6, 把全局域中window.x=window变成 window.x=6 然后 return window 赋值给 y 即:y=window y=window 赋值语句把window.y=undefined 变成了 window.y=window */ y=a(6); //综上所述:window.x=6 window.y=window console.log(x.x); //输出x.x 相当于:(window.x).x=6.x------->window对象中没有 6.x属性 则输出undefined console.log(y.x); //输出 y.x 相当于:(window.y).x=window.x------------>window对象中有window.x这个属性 则输出6
X月亮代表我的心
2015-12-04
打赏
举报
回复
引用 2楼xxxyyyzzz0 的回复:
结果是undefind,6
理解不了!
xxxyyyzzz0
2015-12-04
打赏
举报
回复
直接调用函数,this表示全局对象
xxxyyyzzz0
2015-12-04
打赏
举报
回复
结果是undefind,6
夏天的蚂蚱
2015-12-04
打赏
举报
回复
定义的a方法,直接调用this对象指向的是window全局变量。在x=a(5)时,this.x就是window.x得到的是5,后来x接到了返回值是window.这一点你可以把y=a(6)注释掉执行看到!然后再调用y=a(6),这时候this.x把之前的x改写成6,成了一个数值型的变量了。这时候y接到了返回的window,x.x不存在,y.x就是被改写的那个6了!
xxxyyyzzz0
2015-12-04
打赏
举报
回复
引用 3 楼 XiaoKangmemeda 的回复:
引用 2楼xxxyyyzzz0 的回复:
结果是undefind,6
理解不了!
用Firebug调试一下你就知道每一步是干什么了。
【JavaScript】this指向经典
面试题
(超详细)
还会担心被面试到有关this指向的问题嘛?那还等什么,进来带你学习你看不懂的this指向
面试题
JavaScript
中
this
面试题
, 四道题彻底清楚this指向问题
如果不清楚this绑定规则可以看上一篇有详细说明 打印结果:
解释
: 打印结果
解释
:person1.foo1(): 隐式绑定, this指向发起调用的对象person1person1.foo1.call(person2): 显示绑定, this指向person2person1.foo2(): foo2是
一个
箭头函数, 箭头函数
中
没有this, 会向上级作用域寻找, 上级作用域this指向windowperson1.foo2.call(person2): foo2是
一个
箭头函数, 对箭头函数绑定this是不生
JavaScript相关this指向
面试题
这篇文章用来整理this指向相关
面试题
,我们请看内容##
面试题
一上面代码执行之后依次打印
解释
一下,这里的第
一个
window是上面的person对象里面的sayName函数,那么我们这里调用的this为什么不是指向我们preson对象呢?原因是我们sayName方法使用环境,将sayName函数重新赋值给了
一个
变量sss,我们调用sss()执行sayName方法,当我们调用sss的时候我们当前的环境是在windows
中
,所以我们可以理解,假如我们直接调用才是打印person对象,也就是我们第二个打印出。
【
JS
】彻底搞懂JavaScript
中
的this指向
彻底搞懂JavaScript
中
的this指向1. this指向什么2. this绑定规则2.1. 默认绑定案例一:普通函数调用2.2. 隐式绑定2.3. 显示绑定2.4. new绑定2.5. 规则优先级3. this规则之外4. this
面试题
1. this指向什么 在全局作用域下,我们可以认为this就是指向的window console.log(this); // window var name = "why"; console.log(this.name); // why console.log(
community_281
699
社区成员
253,704
社区内容
发帖
与我相关
我的任务
community_281
提出问题
复制链接
扫一扫
分享
社区描述
提出问题
其他
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章