`
zhouyrt
  • 浏览: 1173073 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

call和apply的第一个参数是null/undefined时函数内的的this指向window或global

 
阅读更多

call/apply用来改变函数的执行上下文(this),它们的第一个参数thisArg是个对象,即作为函数内的this。

 

多数时候你传啥函数内就是啥。仅以call示例

function fun() {
	alert(this);
}
fun.call(1);
fun.call('a');
fun.call(true);
fun.call({name:'jack'}); 

 

分别弹出“1”、“a”、“true”、“[object Object]”。

 

有两种情况需要注意,传null或undefined时,将是JS执行环境的全局变量。浏览器中是window,其它环境(如node)则是global。

fun.call(null); // window or global
fun.call(undefined); // window or global
 
这在ECMAScript5.1 15.3.4.4中有解释,如下

  • 大小: 14.4 KB
分享到:
评论

相关推荐

    js this指向笔记.docx

    - 在严格模式下,如果使用 `call`, `apply` 传入 `null` 或 `undefined`,`this` 不会指向全局对象,而是直接保持 `null` 或 `undefined`。 面试题中的例子进一步展示了这些原则的应用。例如,箭头函数面试题1-3...

    javascript中call和apply方法浅谈

    当`call`和`apply`的第一个参数为`null`或`undefined`时,`this`将默认指向全局对象(在浏览器环境中是`window`,在Node.js环境中是`global`)。例如: ```javascript var a = 10, b = 20; function testFun() { ...

    【JavaScript源代码】JavaScript中的this指向问题详解.docx

    在严格模式下,如果`this`尝试指向`undefined`或`null`,它将保持`undefined`,而不是自动转换为全局对象。理解这7个规则,并结合实际情况灵活运用,可以帮助你准确地判断`this`的指向,避免因`this`引发的常见错误...

    面试必备JS函数工具库手写.docx

    在JavaScript中,`call()`, `apply()`, 和 `bind()` 都是用来改变函数执行时的上下文(即`this`的指向)。这三个方法对于理解JavaScript的运行机制至关重要,尤其在面试中经常被考察。 首先,我们来看`call()`方法...

    JavaScript 24道面试题和答案.docx

    - 全局作用域/函数外部:this指向window(浏览器环境)或global(Node.js环境)。 - 对象方法内部:this指向调用该方法的对象。 - 构造函数内部:this指向新创建的实例。 - apply/call/bind:显式改变this指向。...

    javascript函数的四种调用模式

    - `this`的值由调用时传入的第一个参数决定,它可以是任何值,包括`null`、`undefined`、原始值或对象引用。 - 返回值同样由`return`语句决定,无`return`则返回`undefined`。 了解这些调用模式有助于编写更准确...

    js代码-JavaScript apply方法

    JavaScript中的`apply()`方法是函数对象的一个内置方法,它允许我们改变函数调用时的上下文(即`this`的值)以及以数组形式传递参数。这个知识点在JavaScript编程中非常关键,尤其当我们处理函数调用、对象方法或...

    浅析Javascript中bind()方法的使用与实现

    bind()方法是JavaScript中Function对象的一个原生方法,它用于创建一个新的函数,这个新函数的this值被指定为bind()的第一个参数,而其余参数将作为新函数的预设参数传入。它主要解决的是this指向的问题。 ### bind...

    js代码-bind test

    // 第一个参数为null,因为不需要改变原始函数的`this` greetWithHello('John'); // 输出 "Hello, John!" ``` 在这个例子中,`greetWithHello`函数已经预设了`greeting`参数为'Hello',所以当我们调用它时只需要...

Global site tag (gtag.js) - Google Analytics