校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > js语言和框架 > 语法相关-操作符相关
题目

请写出new完对象后,this相关参数的值

<script>

        var xuuu = 123;

        function  test() {

               var xuuu = 456;

               this.aa = 6666;     

               return function() {

        console.log(xuuu);

        console.log(this.aa);

        console.log(this.xuuu); 

              };

         };

      var sdf=new test();

     sdf();

     test()();

</script>

解答

正确答案:

sdf()执行结果是 :456,undefined,123

test()执行结果是:456,6666, 123

解析:

这里有两个考点,1是同名全局变量(xuuu)和内部变量的选取;2是this指向的问题

console.log(xuuu),相同名称,函数作用域优先查找最内层的值,所以返回是456

console.log(this.aa)需要重点分析,主要是this的指向。本题中,this出现域有两块,一块是test()的变量this.aa=6666;另一块是test()中return方法的输出值。

调用new test()时this指向的是调用对象test函数的sdf,但是因为题中return了一个函数,所以这一步执行的结果导致了sdf成为了一个函数对象,(如果此时console.log(sdf.aa)是没有结果的,因为函数对象没有自定义属性。

所以调用sdf()时,this对象是全局对象window,this找不到aa属性,输出undefined

同理,调用test()时,this传入的是window对象,所以打印的是456,6666,123

C 1条回复 评论
songsong

oo 我居然答对了

发表于 2021-03-08 17:25:04
0 0