call/apply以及this指向的理解】的更多相关文章

javascript是面向对象的语言,Function也是一种对象,有自己的属性和方法.call和apply就是js函数自带方法,挂在Fucntion.prototype上. 一般调用某函数时,直接“函数名(参数)”的写法即可,函数内部的this指向函数的调用者. function add(a,b){ console.log(this); return a+b; } add(1,2) // 默认window调用,this指向window var math = { add:function(a,b…
关于js中this指向的理解! this是什么?定义:this是包含它的函数作为方法被调用时所属的对象. 首先,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(虽然在很多情况下那样去理解不会出什么问题,但是实际上会有些特殊存在),那么接下来我会深入的探讨这个问题. 例子1: function a(){ var user = " 小明"; console.log(this.user); //undef…
this的指向问题 全局作用域下的this指向 无论是否是严格模式,全局作用域下的this始终指向window 函数内部的this 严格模式下: function test() { 'use strict' console.log(this) } test(); // undefined window.test(); // window 非严格模式下: function test() { console.log(this) } test(); // window window.test(); /…
最近在使用jQuery的$.each方法时很,突然想到$.each($('div'),function(index,entity){});中的这个index和entity是哪冒出来的,而且可有可无的,而且这么高大上的能告诉我们当前遍历的下标和实例.所以看了一下jQuery源代码,是这么写的:…
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #a5b2b9 } span.Apple-tab-span { white-space: pre } p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #a5b2b9 } span.Apple-tab-span { white-space: pre } call 1.作…
一.bind的用法 第一个:obj.showInfo('arg','arg_18');中传的2个参数通过showInfo方法改变的是obj下中的name和age 第二个:obj.showInfo.bind(this)('bind','bind_18');中bind要传的name和age是通过一个一个传的形式,然后通过showInfo方法改变的是window下的name和age 注:bind 返回的是一个新的函数,你必须调用它才会被执行 二.apply的用法 第一个:obj.showInfo('a…
实现this指向原理 var value = 'value' var obj = { value: 'obj' } function func() { console.log(this.value) } func() // obj func.call(obj) // obj obj.func = func // 相当于obj变成了 obj = { value: 'obj', func: function func() {console.log(this.value)}} --创建后记得删除 ob…
// apply 的第二参数通常是数组 但是也可以传递类数组对象{length: 2}console.log(Array.apply(null, {length: 2})) // [undefined, undefined]// 1 熟悉一点: {length: 2}作为Array.apply第二个参数等同于[undefined, undefined]作为Array.apply第二个参数Array.apply(null, [undefined, undefined]);// 2 再熟悉一点:ap…
首先看一道网易的面试题: var a = { a:"haha", getA:function(){ console.log(this.a); } } var b = { a:"hello" } var getA = a.getA; var getA2 = getA.bind(a); function run(fn){ fn(); } //分别输出 a.getA();//haha getA();//window下面的a对象 run(a.getA);//window下面…
call.apply.bind的作用是改变函数运行时this的指向. 如果你传的 context 就 null 或者 undefined,那么 window 对象就是默认的 context(严格模式下默认 context 是 undefined) 函数运行时,有三种调用方法. 方法调用模式 var a = 1 var obj1 = { a:2, fn:function(){ console.log(this.a) } } obj1.fn()//2 this是指obj1这个对象,obj1.fn()…
this的指向由调用时决定而不是定义时决定,定义的方式: //直接定义在函数里 var a="window中的a"; var name="window"; function aa(args1,args2){ console.log(this.a+args1+args2); } aa(); //this=window //定义在对象中 var o={ a:"o中的aaa", name:"nicole", print:functi…
1.更改this指向 方法1:对this进行保存            var _this = this; 例: var _this = this;     document.onclick = function(){        console.log(_this)      }     console.log(_this); 方法2:bind   更改this指向.   返回的是一个函数体           注意:  fn.bind(document)();   更改指向必须加()调用.…
this是js的一个关键字,随着函数使用场合不同,this的值会发生变化.但是总有一个原则,那就是this指的是调用函数的那个对象. 1.纯粹函数调用. function test() { this.x = 1; alert(x);}test(); 其实这里的this就是全局变量.看下面的例子就能很好的理解其实this就是全局对象Global. var x = 1;function test() { alert(this.x);}test();//1 var x = 1;function tes…
this介绍: C#里this关键字的意义比较确定的.JavaScript的this关键字,随着函数使用场合不同,this的值会发生变化,感觉用法比较混乱,所以,现在是有必要整理一下的时刻了! 总结一个原则:在js里面,this指针代表的是执行当前代码的对象的所有者. 1.和c#类似的纯粹函数调用: function test() { this.x = 1; alert(x); } test();//1 其实这里的this就是全局变量.看下面的例子就能很好的理解这里的this就是全局对象Glob…
一.JavaScript中的函数 在了解this指向之前,要先弄明白函数执行时它的执行环境是如何创建的,这样可以更清楚的去理解JavaScript中的this指向. function fn(x,y,name){ var str1=x; var str2=y; this.name=name; function(){ alert(str1,str2); } }fn(1,1,Admin); 当调用fn(1,1,Admin)时,首先函数会创建一个活动对象,也叫做变量对象,接着为函数调用创建一个类似数组的…
this 定义:this是包含它的函数作为方法被调用时所属的对象.(1,this所在的函数.2,此函数作为方法被调用.3,this等于调用此函数的对象) this 对象在运行时基于函数的执行环境绑定的.在全局环境中this等于window,当函数作为某个对象的方法调用时,this等于那个对象.所以说,this的指向完全 取决于函数的调用方式. 1>函数的四种调用方式 1.函数调用模式 function fn() {console.log(this)}fn(); //window this是全局对…
一.数组去重,直接写到Array原型链上. //该方法只能去除相同的数字 不会去判断24和'24'是不同的 所有数字和字符串数字是相同是重复的 Array.prototype.redup=function(){ var obj={}; for(var i=0;i<this.length;i++){ var val=this[i]; if(obj[val]==this[i]){ //如果发现重复的 this[i]=this[this.length-1]; //那就把最后一个赋值给当前的这个数组元素…
JavaScript提供了apply和call两种调用方式来确定函数中的this的指向,在现实编码中,我确实 很少接触到这两个方法.但很无奈,很多面试题都要考这两种方法,我又没怎么用到,所以我们先来 闲聊下他们到底有什么用和到底怎么用.         我们先来聊一下apply的用法吧,它是用来改变函数的指向的,说白了,就是指向了别的函数的作用域. 例如看一下下面这个例子. var A={ name:"我是小A", fun:function(){ console.log("大…
关于this指向可以了解我的另一篇博客:JavaScript中的this指向规则. 一.call与apply的使用 回顾call与apply的this指向: var value = "window"; var obj = { value:"obj" } fonction show(){ console.log(this.value); } show();//window show.call(obj);//obj show(null);//window 回顾call与…
var arr = []; var obj = { '0':'零', '1':'一', 'a':'sdsd', length : 2 } console.log( arr.push.call(obj,'二'),obj ) //只是当时调用那一下改变this指向,本来obj不能用数组的push但是借用实现了这一点, 但是要注意,方法也要有条件的,比如push要有length属性 call  : 方法名.call(this指向的值,参数1,参数2,···) apply  : 方法名.apply(th…
JavaScript中apply与call的用法意义及区别 apply()与call()的区别 javascript中apply和call方法的作用及区别说明 .apply()用法和call()的区别 apply和call方法定义及apply和call方法的区别 call,apply,bind用法和意义 Javascript中call与apply区别是什么,用在什么地方,在angularjs.reactjs中有没有应用? this,call和apply(这三个东西,如何牢牢记住) js中call…
call.apply.bind 1.相同也不同 我们先从浅显的部分开始讲, 这三个方法都可以改变this的指向,都可以进行传参,第一个参数都是修改this的指向 call() 和 apply() 改变this指向后会立即执行函数 bind() 改变this指向后不会立即执行 call() 和 apply() 区别在于参数 · call() 第一个参数是修改的this指向,后续的参数都是传入该函数的值,他的传值只能一个个传 · apply() 第一个参数是修改的this指向,第二个参数是一个数组,…
一看见合并数组,可能第一反应就是concat,concat确实具有我们想要的行为,但它实际上并不附加到现有数组,而是创建并返回一个新数组. 同样你也许会想到ES6的扩展运算符...         但它同样也是新生成一个数组. 但是我们想要附加到我们现有的阵列,运用apply: var array = ['a', 'b'];var elements = [0, 1, 2];array.push.apply(array, elements);console.log(array); // ["a&q…
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:http://www.cnblogs.com/lvonve/ CSDN:https://blog.csdn.net/lvonve/ 在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目.现在就让我们一起进入 Web 前端学习的冒险之旅吧! 一.apply 和…
相同点: 改变this的指向: var a = { name:"丸子", fn:function(){ console.log(this.name); } } var b = a.fn; b()//undefined b.call(a);//丸子 b.apply(a);//丸子 b.bind(a);//没有被打印 不同点: 1,call和apply都是立即执行,而bind则是返回一个函数: var a = { name:"丸子", fn:function(){ co…
apply方法,作用跟call一样,也可以用来改变函数执行时,this指针的指向,区别在于apply方法要求第二个参数必须是数组形式 例子,舞台上添加名为a和b的实例mc 案例1: a.getNumValue=function(num:uint){ trace(this.name,num) }; a.getNumValue.call(a,2); a.getNumValue.call(b,2); a.getNumValue.apply(b,[1]); /* trace结果 a 2 b 2 b 1…
bind(),call(), apply()方法的区别是什么? 共同点:改变this指向,任何调用都不在起作用 bind() 改变this的指向,不会调用函数,返回一个新的函数 var o ={a:'abc'}; var fn1 = fn.bind(o);//this指向o 相当o.fn fn1();// call( ) 改变this指向并调用函数---判断数据类型 var arr = [1,2,4] var str = '1231'; console.log(Object.prototype.…
js中 this的指向一共存在3种地方: 1.全局的this; 2.构造函数的this; 3.call/apply; 一.全局的this: function test(){ this.d = 3;//函数的默认指向是window var a = 1; function c(){ } } test(123); console.log(window.d); console.log(this.d);//this 默认指向window 这里有两个点:函数的默认指向是window:全局this 指向 wi…
this 的指向,是在调用函数时根据执行上下文所动态确定的. 在函数体中,简单调用该函数时(非显式/隐式绑定下),严格模式下 this 绑定到 undefined,否则绑定到全局对象 window/global; 一般构造函数 new 调用,绑定到新创建的对象上; 一般由 call/apply/bind 方法显式调用,绑定到指定参数的对象上; 一般由上下文对象调用,绑定在该对象上; 箭头函数中,根据外层上下文绑定的 this 决定 this 指向. 例题组合 1:全局环境下的 this 函数在浏…
概念: this是运行环境下的一个系统变量, 由于this在不同的执行环境下有不同的值, 所以在使用this时,多加注意 (使用this之前,先打印) 1,在全局作用域下,this默认指向window(前端运行环境),{}(后端运行环境). 2,在事件函数中,this指向绑定事件的目标 3,在构造函数中,this指向构造函数将要创建的对象 4,在对象中,this指向对象本身 特殊情况:(1) 有函数嵌套时,内层的函数this不会继承外层函数的this的值,会被还原成window 如果像让内层函数…