啥事windows是对象啊,能解释下吗,顺便问下截图中代码为啥是安笛梵啊

啥事windows是对象啊,能解释下吗,顺便问下截图中代码为啥是安笛梵啊

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕慕子 2021-09-27 10:05:03

同学你好,对于你的问题解答如下:

1、应该是window对象,而不是windows,没有后面的s。

js语法中规定,window是一个全局对象,全局作用域中的声明的变量和函数会添加到全局对象中,默认作为全局对象window的属性和方法。示例:

https://img1.sycdn.imooc.com//climg/615122b1099bc72314940625.jpg

另外,在全局作用域中,输出this,默认指向全局对象window。示例:

https://img1.sycdn.imooc.com//climg/6151231509fafd2613210469.jpg

有关window对象,在前面课程中也有详细的讲解,同学可以回顾下课程,加深理解和记忆。

2、截图中的代码,在执行var sayHello = xiaoming.sayHello 这句代码时,相当于将xiaoming对象下的sayHello方法赋值给了全局变量sayHello;

接着执行sayHello()这句代码时,是在全局作用域调用的sayHello,所以此时函数内部的this指向全局对象window,而全局对象window上并没有nickname和age属性,所以输出结果为undefined。

祝学习愉快~

  • 提问者 球球不一般 #1

    https://img1.sycdn.imooc.com//climg/615135cf09b6179009990105.jpg这句话不明白能给我解释下吗

    2021-09-27 11:09:17
  • 好帮手慕慕子 回复 提问者 球球不一般 #2

    同学你好,这句话的意思具体参考如下解析:

    下图圈起来的代码,是在全局作用域中调用的。

    https://img1.sycdn.imooc.com//climg/61515a09096f14a208420488.jpg

    js语法中规定,在全局作用域中调用的函数,内部this指向window。sayHello此时对应的函数是function() {console.log('我是' + this.nickname + '我' + this.age + '岁了') },也就是说这个函数内部的this指向window,那么此时的this.nickname和this.age就相当于window.nickname和window.age。

    由于window对象上并没有设置nickname和age属性,所以通过打点调用nickname和age属性时,返回结果为undefined

    祝学习愉快~

    2021-09-27 13:47:34
  • 提问者 球球不一般 回复 好帮手慕慕子 #3

    我听不明白啊

    2021-09-27 16:41:34
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师