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); // undefin…
如题:在js中我们都知道call/apply,还有比较少用的bind;传入的第一个参数都是改变函数当前上下文对象;call/apply区别在于传的参数不同,一个是已逗号分隔字符串,一个以数组形式.而bind和call几乎没差别只是将值返回. 可是当我们将null/undefined作为值传进去的时候呢?居然得到的是window,当前js运行环境的全局对象. 这其实在es5中就有解释的:传入null/undefined的时候将执行js全局对象浏览器中是window,其他环境是global.这样就解…
在js中我们都知道call/apply,还有比较少用的bind;传入的第一个参数都是改变函数当前上下文对象; call/apply区别在于传的参数不同,一个是已逗号分隔字符串,一个以数组形式.而bind和call几乎没差别只是将值返回. 可是当我们将null/undefined作为值传进去的时候呢?居然得到的是window,当前js运行环境的全局对象. 这其实在es5中就有解释的:传入null/undefined的时候将执行js全局对象浏览器中是window,其他环境是global.这样就解释得…
Function.apply(obj,args)方法能接收两个参数 obj:这个对象将代替Function类里this对象 args:这个是数组,它将作为参数传给Function(args-->arguments) Function.call(obj,[param1[,param2[,…[,paramN]]]]) obj:这个对象将代替Function类里this对象 params:这个是一个参数列表.…
//function_traits.h,获得函数返回值类型.参数tuple.成员函数指针中的对象类型 //参考https://github.com/qicosmos/cosmos/blob/master/function_traits.hpp,进行了精简和补充 #pragma once #include <functional> #include <tuple> //类模板原型 template<typename T> struct function_traits; /…
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…
Delphi动态事件深入分析 2009-2-7 作者:不得闲核心提示:本实验证明了在类中方法的调用时候,所有的方法都隐含了一个Self参数,并且该参数作为对象方法的第一个参数传递... 首先做一个空窗体,放入一Button.在implementation下面声明两个方法如下: // 外部方法,只声明一个参数,此时按照标准的对象内部事件方法TNotifyEvent声明,此声明中,Sender则对应为产生该事件的对象指针. procedure ExtClick1(Sender: TObject);…
永远不要传递字符串作为setTimeout的第一个参数!!!记住第一个参数只允许函数,或者匿名函数!因为传递字符串有陷阱啊!!它就是披着羊皮的eval啊!!而且上下文会变成全局啊!! 第一个参数为可执行函数,当第一个参数调用的函数带括号的时候是返回函数执行的结果:直接调用,不等待2000ms:…
一.实际场景中抽象出的一个问题 下面this各指向什么? var a = { b: function() { console.log(this); }, f: function() { var c = this.b; c(); } }; a.b(); a.f(); 第一个this指向a,第二个this指向window.(做对了吗) 二.JavaScript中变量复制的问题 变量拷贝分为值拷贝和引用类型数据拷贝 一个变量向另一个变量复制基本类型数据值时,另一个变量会在自己所占的内存中保存一份属于自…
http://blog.csdn.net/linjf520/article/details/8746064 大家在使用Function.apply或是call时,是否发现,第一个参数不知道怎么用,赋值了也没反应: 没反应的情况,是因为你的这个Function是普通的类成员函数: 重点总结: 从这点我们可以知道:AS3中的普通函数,与匿名函数的this区别(这个发现与JS的一样) 因为,普通类成员函数中,的this都是指当前实例对象的引用: 而,匿名函数中,的this都是指当前执行该匿名函数的th…