call和apply第一个参数为null/undefined,函数this指向全局对象

call和apply第一个参数为null/undefined,函数this指向全局对象,在浏览器中是window,在node中是global

在严格模式中(ie 6/7/8/9 除外),传入null/undefined,this不指向全局对象,而是null/undefined本身

‘use strict‘

function func(){
  console.log(this);
}

func.call(null); // null
func.apply(undefined); // undefined

参考:http://www.cnblogs.com/snandy/archive/2012/03/01/2373243.html

原文地址:https://www.cnblogs.com/mengff/p/9771054.html

时间: 2024-10-16 03:31:31

call和apply第一个参数为null/undefined,函数this指向全局对象的相关文章

call/apply的第一个参数如果为null。this指向window

call/apply是用来改变函数的作用域的,第一次参数为this,第二个参数为传输的值,例如 var a ="windowA"; var b = "windowB"; var str = "str"; var myObject = {a:"myA",b:"myB"}; function hello(s){ alert("a= "+this.a + ", b= "+t

Java中InvocationHandler接口中第一个参数proxy详解

java动态代理机制中有两个重要的类和接口InvocationHandler(接口)和Proxy(类),这一个类Proxy和接口InvocationHandler是我们实现动态代理的核心: 1.InvocationHandler接口是proxy代理实例的调用处理程序实现的一个接口,每一个proxy代理实例都有一个关联的调用处理程序:在代理实例调用方法时,方法调用被编码分派到调用处理程序的invoke方法. 看下官方文档对InvocationHandler接口的描述: {@code Invocat

this、apply/call、bind、闭包、函数、变量复制

一.实际场景中抽象出的一个问题 下面this各指向什么? var a = { b: function() { console.log(this); }, f: function() { var c = this.b; c(); } }; a.b(); a.f(); 第一个this指向a,第二个this指向window.(做对了吗) 二.JavaScript中变量复制的问题 变量拷贝分为值拷贝和引用类型数据拷贝 一个变量向另一个变量复制基本类型数据值时,另一个变量会在自己所占的内存中保存一份属于自

fopen的第一个参数不能有'\n'

我刚才写了个程序, 需要操作两个文件.  我用fgets获取标准输入流stdin中的文件名, 然后用fopen打开. 结果编译器总是抱错.  调试了一下,发现fopen返回的是NULL. 我在此处加了个ferror, 系统提示 无效的参数.  我首先排出了第二个参数,那就是第一个参数出现了问题.  我检查了一下存放文件名的数组,发现最后一个字符'\0‘前含有一个换行符. 会不会是换行符出了问题?  我用gets获取文件名( 因为gets和fgets的区别有:前者会将换行符替换成空字符, 而后者会

XFire调用CXF参数为Null的问题

最近,领导分配了一个任务,做接口联调.情况是这样,对方客户升级了接口采用CXF,而我们还是用的XFire1.2.6,首先就遇到了这个问题:XFire调用CXF参数为Null的问题 . 在网上搜了一大堆资料: http://blog.csdn.net/larry_lv/article/details/6721057 http://ks2144634.blog.163.com/blog/static/133585503201412855556210/ 按照第一个始终还是没能解决,后来找到第二个花了不

axios post 请求后端参数为null解决方案

先看看官方教学请求写法 axios.post('http://xxx.xxx.xxx.xxx:xxxx/xx', {'id': 'test'}).then(function (res) { console.log(res) }).catch(function (error) { alert(error) }) 结果后端接收到请求后,从HttpServletRequest获取的参数居然是null,这里记录一下,怎样解决这个问题,免得以后忘记,原因可以网上找找 这是后端的接收请求代码 @Reques

setTimeout 第一个参数类型

读别人代码的时候看到这么一段,很不理解,然后就搜了一下百度 setTimeout / setInterval 第一个参数可以有三种类型: 字符串   .  methods  .  匿名函数 1.字符串 for (var i = 0, l = aLi.length; i < l; i++) { if (true) { setTimeout("setImg(" + i + ")", 500); } } 这里setImg函数作为字符串传递,不是特别理解,汗颜!! 2

XFile客户端调用JDK1.6+的webserivce时参数为null

Webservice的服务端用JDK1.6+自带的Webservice做的,客户端用的是XFile的webservice调用的,但是传过来的参数为NULL. XFile的调用方式是: String wsdl = "http://192.168.1.112:8088/testService?wsdl"; try { Client client = new Client(new URL(wsdl)); String result = client.invoke("test&quo

(转)Delphi 调用C#编写的WebService 参数为Null解决方法 附中文乱码问题

(转)Delphi 调用C#编写的WebService 参数为Null解决方法 附中文乱码问题 //add-------to support UTF-8     RIO.HTTPWebNode.UseUTF8InHeader := true;  //添加该行,指定采用UTF-8代码传输     RIO.Converter.Encoding:='UTF-8';     RIO.Converter.Options:=RIO.Converter.Options + [soUTF8InHeader,so