apply、call、bind有什么区别?】的更多相关文章

一.数组去重,直接写到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 中,this的指向是动态变化的,很可能在写程序的过程中,无意中破坏掉this的指向,所以我们需要一种可以把this的含义固定的技术,于是就有了call,apply 和bind这三个方法,来改变函数体内部 this 的指向,因为函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念 apply.call apply:应用某一对象的一个方法,用另一个对象替换当前对象 call:调用一个对象的一个方法,以另一个对象替换当前对象 function pers…
call(thisObj,param1,param2....)方法:调用一个对象的方法,用另外的对象去替换当前对象. 下面给出一个例子: function add(a,b){ return a+b; } function sub(a,b){ return a-b; } add.call(sub,3,2) 当执行以上代码时,输出的结果为5.执行add.call(sub,3,2)==add(3,2);相当于用add来替换sub;其实每一个函数也是一个对象,它是Function的实例对象. 再写一个改…
先构造函数let xiaowang={ name1:"小王", age:", sex:"男", say:function(){ console.log(this.name1+","+this.age+","+this.sex) } } let xiaohong={ name1:"小红", age:", sex:"女" } 调用xiaowang xiaowang.say…
对象.方法(); 谁调用该方法this就指向谁. call()语法: call()精华: 让一个函数成为指定对象的方法进行调用. Person.call(document); //等价于 document.Person(); 因此this就指向了括号里的document //方法.call(对象): apply(): 原理是一样,只是传参的形式不一样 apply是以数组的形式传参(arguments) bind(): 有返回值,需要return let 新函数 = 函数.bind (obj);…
this的指向问题 一般情况下this对象指向调用函数的对象,全局环境中执行函数this对象指向window. function a(){ console.log(this); //输出函数a中的this对象 } function b(){}; var c={name:"call"}; //定义对象c var c = { getFunc:function(){ return function(){ console.log(this) } } } var cFun = c.getFunc…
1.call/apply/bind方法的来源 首先,在使用call,apply,bind方法时,我们有必要知道这三个方法究竟是来自哪里?为什么可以使用的到这三个方法? call,apply,bind这三个方法其实都是继承自Function.prototype中的,属于实例方法. 1 console.log(Function.prototype.hasOwnProperty('call')) //true 2 console.log(Function.prototype.hasOwnPropert…
call.apply.bind使用和区别 // 有只猫叫小黑,小黑会吃鱼 const cat = { name: '小黑', eatFish(...args) { console.log('this指向=>', this); console.log('...args', args); console.log(this.name + '吃鱼'); }, } // 有只狗叫大毛,大毛会吃骨头 const dog = { name: '大毛', eatBone(...args) { console.l…
在 javascript之 this 关键字详解 文章中,谈及了如下内容,做一个简单的回顾: 1.this对象的涵义就是指向当前对象中的属性和方法. 2.this指向的可变性.当在全局作用域时,this指向全局:当在某个对象中使用this时,this指向该对象:当把某个对象的方法赋值给另外一个对象时,this会指向后一个对象. 3.this的使用场合有:在全局环境中使用:在构造函数中使用,在对象的方法中使用. 4.this的使用注意点,最重要的一点就是要避免多层嵌套使用this对象. 对this…
1.什么是this 在JavaScript中this可以是全局对象.当前对象或者任意对象,这完全取决于函数的调用方式,this 绑定的对象即函数执行的上下文环境(context). 为了帮助理解,让我们来一起看一段代码: // 作为对象方法调用 var test = { a : 5, b : 6, sum : function () { return this.a + this.b; // 此处this = test } } alert(test.sum()); 作为对象调用时this很容易理解…