前端测试题:(解析)关于JS中this关键字的说法,下面错误的是?

时间:2022-07-22
本文章向大家介绍前端测试题:(解析)关于JS中this关键字的说法,下面错误的是?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

考核内容: this关键字

题发散度: ★

试题难度: ★★

解题思路:

可以参考以下说明:

前端测试题: 关于this的用法下面说法正确的是?

this 的工作原理

JavaScript 有一套完全不同于其它语言的对 this 的处理机制。在五种不同的情况下 ,this 指向的各不相同。

1.全局范围:

this;

浏览器中运行的 JavaScript 脚本,这个全局对象是 window。

2.全局函数调用:

foo();

这里 this 也会指向全局对象。

3.对象函数调用:

test.foo();

如果函数倾向于和 new 关键词一块使用,则我们称这个函数是 构造函数。在函数内部,this 指向新创建的对象。

从以上可以看出:

this 指向的并不是函数foo, 而是 c

调用的函数作为一个对象的属性出现时,this 指向的是“.”或“[”关键符号 前的那个对象

4.显式的设置 this

function foo(a, b, c) {}
var bar = {};
foo.apply(bar, [1, 2, 3]); // 数组将会被扩展,如下所示
foo.call(bar, 1, 2, 3); // 传递到foo的参数是:a = 1, b = 2, c = 3

当使用 Function.prototype 上的 call 或者 apply 方法时,函数内的 this 将会被 显式设置为函数调用的第一个参数。

因此函数调用的规则在上例中已经不适用了,在foo 函数内 this 被设置成了 bar。

5.调用某些方法时:

如:Function.prototype 上的 call 或者 apply 方法 以及 with等它指向 传入的对象。

参考代码:

百度实习生前端岗位的笔试题

/*this的作用域*/
var a = 10;
function test() {
        a = 5;
        alert(a);
        alert(this.a);
var a;
        alert(this.a);
        alert(a);
    }
    // 执行test()和new test() 返回值分别是什么?

返回结果:

test(): 5,10,10,5
new test():5,undefined,undefined,5

第一种情况 this指拥有test的对象,这儿是windows

第二种情况this指new创建的对象,因为未定义this.a,所以undefined

答案:错误的是

C. 调用的函数作为一个对象的属性出现时,
    this 指向的是当前函数对象。