精华内容
下载资源
问答
  • 1、回调函数中,用箭头函数改变this的作用域 success: (res)=>{ this.setData({ //此时,...2、自定义事件中,如果使用箭头函数,则箭头函数中的this指向undefined,不指向page onLike: (event)=>{ ...

    1、回调函数中,用箭头函数改变this的作用域

    success: (res)=>{
        this.setData({     //此时,this指向page页面
            ...
        })
    }    
    

     

    2、自定义事件中,如果使用箭头函数,则箭头函数中的this指向undefined,不指向page

    onLike: (event)=>{
        likeModel.like(this.data.classic.id)  //报错,this指向undefined
      },
    

    需要修改成传统函数形式

    onLike: function(event){
        likeModel.like(this.data.classic.id)  //此时,this指向page页面,不报错
      },
    

      

     

    转载于:https://www.cnblogs.com/qq254980080/p/11068059.html

    展开全文
  • 箭头函数this指向以及改变this指向的方法 call apply bind 总结 相同点: 都可以改变函数内部的this指向 不同点 : 1.call和apply会调用函数,并且改变函数内部this的指向 2.call和apply传递的参数不一样,call传递...

    1.在普通模式下

    显而易见的this指向

    <script type="text/javascript">
    		
    			//1.普通函数  this指向window 
    			function fn(){
    				console.log('1.普通函数this指向:'+this);
    			}
    			fn();//fn.call();//window.fn();
    			
    			//2.对象的方法 this指向Object
    			var o={
    				sayHi:function(){
    					console.log('2.对象的方法this指向:'+this);
    				}
    			}
    			o.sayHi();
    			
    			//3.构造函数 this指向 ldh 这个实例对象 原型对象里面的this指向的也是ldh这个实例对象
    			function Star(){};
    			Star.prototype.sing=function(){
    				
    			}
    			var ldh=new Star();
    			console.log('3.构造函数this指向:'+this);
    			
    			//4.绑定事件函数  this指向函数的调用者  btn这个按钮对象
    			var btn=document.querySelector('button');
    			btn.onclick=function(){
    				console.log('4.绑定时间函数的this:'+this);
    			};//点击了按钮就可以调用这个函数
    			
    			//5.定时器函数  this指向window 
    			setTimeout(function() {
    				console.log('5.定时器函数this:'+this);
    			}, 1000);
    			// window.setInterval(function() {
    			// 	console.log('定时器函数this:'+this);
    			// },1000);//这个函数是定时器自动1秒钟调用一次
    			
    			//6.立即执行函数  this指向window 
    			(function(){
    			console.log('6.立即执行函数this:'+this);
    			})();
    			//立即执行函数是自动调用
    		</script>
    

    输出结果:
    在这里插入图片描述
    改变this指向的三种方法:
    call()
    apply()
    bind()

    call apply bind 总结
    相同点: 都可以改变函数内部的this指向
    不同点 :
    1.call和apply会调用函数,并且改变函数内部this的指向
    2.call和apply传递的参数不一样,call传递参数aru1,aru2…形式 , apply必须数组形式
    3.bind 不会调用函数,可以改变函数内部this指向
    主要应用场景
    1.call经常做继承
    2.apply经常跟数组有关系,比如借助于数学对象实现数组最大值最小值
    3.bind不调用函数,但是还想改变this指向,比如改变定时器内部的this指向

    2.在严格模式下

    <script type="text/javascript">
    			'use strict'
    			//1.我们的变量名必须先声明在使用
    			// num=10;
    			// console.log(num);
    			var num=10;
    			console.log(num);
    			
    			//2.我们不能随意删除已经声明好的变量
    			// delete num;
    			
    			//3.严格模式下全局作用域中函数中this 指向的是undefined
    			function fn(){
    				console.log('3.全局作用域中函数中this指向:'+this);
    			}
    			fn();//输出undefined
    			
    			//4.严格模式下,如果 构造函数不加new调用,this指向的是 undefined,如果给他赋值则会报错
    			function Star(){
    				this.sex='男';
    			}
    			// Star();
    			var ldh=new Star();
    			// console.log(ldh.sex);
    			console.log('4.构造函数中this指向:'+this);
    			
    			//5. 定时器this 还是指向window
    			setTimeout(function() {
    				console.log('5.定时器函数this指向:'+this);
    			}, 10);
    			
    			//6.严格模式下函数里面的参数不允许有重名
    			// function fn(a,a){
    			// 	console.log(a+a);
    			// }
    			// fn(1,2);
    			
    			//7.严格模式下函数不能再非函数下运用
    			// (1)if(true){
    			// 	function f(){
    					
    			// 	}//语法错误
    			// }
    			// (2)for(var i=0;i<5;i++){
    			// 	function f2(){
    					
    			// 	}//语法错误
    			// }
    			// (3)function(){//合法
    			// 	function(){//同样合法
    					
    			// 	}
    			// }
    		</script>
    

    输出结果:
    在这里插入图片描述

    展开全文
  • 箭头函数this指向可以一句话概括,箭头函数this指向箭头函数的命名空间(命名空间的this指向哪就指向哪,命名空间就两个地方一个window一个就是函数体) 看下面几个列题就完全明白了 var x = 11; var obj = { ...

    箭头函数的this指向可以一句话概括,箭头函数的this指向箭头函数的命名空间(命名空间的this指向哪就指向哪,命名空间就两个地方一个window一个就是函数体)
    看下面几个列题就完全明白了

    var x = 11;
    	var obj = {
    		x: 22,
    		methods: {
    			x: 33,
    			say: function () { console.log(this.x) },
    			say2: () => { console.log(this.x) },
    			say3: function () {
    				let say4 = () => {//箭头函数命名在say3里面
    					console.log(this.x)
    				}
    				console.log(this.x)
    				say4()
    			}
    		}
    	}
    
    	obj.methods.say();//33
    	obj.methods.say2();//11
    	obj.methods.say3();//33
    	var b=obj.methods.say3()//33
    	var a = obj.methods.say3//函数赋值给a上下文改变
    	a()//this指向全局所以箭头函数命名空间为window
    

    列题二

    var obj1={
    	num:4,
    	fn:function(){
    		var f=function(){    
    			console.log(this); //window,因为函数f定义后并没有对象调用,this直接绑定到最外层的window对象
    			setTimeout(() => {
    				console.log(this);//window,外层this绑定到了window,内层也相当于定义在window层(全局环境)
    			});
    		}
    		f();
    	}
    }
    obj1.fn();
    
    
    展开全文
  • 转载:彻底理解this指向 转载:箭头函数this指向问题
    展开全文
  • 箭头函数this指向

    2021-01-05 19:28:12
    箭头函数this指向 1、 什么是箭头函数 箭头函数是ES6新增语法,在ES5中仅仅作为匿名函数的语法糖形式。 语法形式: (argument1, argument2, ... argumentN) => { // function body } 样例: const add = (a, b)...
  • 【ES6】两个例子明白箭头函数this指向

    万次阅读 多人点赞 2018-09-28 16:05:03
    前言:es6箭头函数没出现之前,this的指向不是函数被创建时绑定,而是...如果对非箭头函数this指向有问题的朋友,建议看我之前的文章。【JavaScript】this的指向详解 (为了展示方便,这两个例子都是在浏览器环境中...
  • 箭头函数this指向对象

    2019-11-14 23:16:54
    const app = { abc() {//1箭头函数寻找到最近作用域 console.log(this);//object, abc函数中拥有this定义,箭头函数寻找到的最近的this定义,指向当前对象app setTimeout(() => { cons...
  • 箭头函数this指向:反之箭头函数的this是在定义的时候就确定了 例子1: 因为normalButton的点击事件绑定了normalFunction这个函数,所以函数里面的this动态指向了normalButton 箭头函数的this是函数...
  • 在网上看到很多关于箭头函数this指向的博客和问题解答,但是基本写的都不准确,有的甚至是错误的,在其他博客网站得到的答案基本就是“箭头函数在定义时this指向谁那么之后就一直指向谁”,这句话虽然不错,但是这不...
  • JS箭头函数this指向问题

    千次阅读 2019-06-13 16:01:53
    JS箭头函数this指向问题
  • 箭头函数this指向问题

    2019-10-11 15:55:16
    我想对箭头函数this指向问题做一点总结 如有错误缺漏,欢迎指出 先出结论: 箭头函数没有自己的this,而是在定义时继承来自外层函数(非箭头函数)的this 实验1 var a = 12; ()=>{ console.log(this.a); ...
  • js中this指向的四种规则+ 箭头函数this指向 四种规则分别是:默认、隐式、显式(call、apply、bind)、new 对象
  • 普通函数下的this: 在普通函数中的this总是代表它的直接调用者,在默认情况下,this指的是window, ...箭头函数没有自己的this, 它的this是继承而来; 默认指向在定义它时所处的对象(宿主对象),...
  • 在文档是这样写的: ...按照我的理解是,当一个对象被创建时,这个对象的this指向谁函数里的this就指向谁; 下面我举个例子 let fn = { a:()=>{ console.log(1,this); }, b:function(){ console....
  • 箭头函数准确来讲是没有this绑定的,在使用时它的this是继承下来的,关于箭头函数this指向我们首先不要走进的误区就是作用域链,既然他自身都没有this那怎么会根据作用域链来找this指向呢? 案例分析 箭头函数中...
  • ES6箭头函数this指向

    2021-07-20 13:16:37
    箭头函数的this是静态的,只能指向当前函数所在的作用域 普通函数中的this指向window对象
  • 众所周知,ES6的箭头函数能解决this指向的问题。能解决this内外指向不一致的问题。 箭头函数体内的this对象,就是定义该函数时所在的作用域指向的对象,而不是使用时所在的作用域指向的对象。 箭头函数的this取决于...
  • 箭头函数没有this箭头函数没有this!! 箭头函数没有this!!! 重要的事情说三遍! 那你可能要问我在箭头函数中明明可以取到this啊! function foo() { this.a = 1 let b = () => console.log(this.a) b...
  • ES6 箭头函数 this 指向

    2018-08-07 12:53:00
    ES6 箭头函数 this 指向 箭头函数有几个使用注意点: 函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。 不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。 不可以使用...
  • 箭头函数的this与调用无关,this指向执行上下文。执行上下文可以理解为当前代码的运行环境。 箭头函数本身所在的对象为obj,而obj的执行上下文是window,因此输出的是20。 const obj = { a: 10, add: () =>...
  • 为什么绑定点击事件用普通函数this指向节点本身,而用箭头函数this却指向window 芜湖 起飞 全体起立 开始码!
  • 大佬们有没有 使用箭头函数 不改变 this指向的经验 比如说 lis.addEventlistener('click', () => { console.log(this); // 这里我不想this 指向window 而是代表点击者本身 有办法解决么 }) 不允许使用 lis...
  • es6箭头函数this指向

    2017-12-08 14:58:55
    http://blog.csdn.net/liwusen/article/details/70257837箭头函数自身是没有this的,它的this是继承它所处环境的this指向箭头函数没有自己的this对象,它总是搬运外部环境的this对象。因此,只要离它最近的外部环境...
  • //普通模式 普通函数 1.谁调用这个函数或者方法this就指向谁 //严格模式 普通函数 ...2.箭头函数this指向箭头函数所在环境中的this //this指向的三个方法 call apply bind 改变this的指向问题 ...
  • //箭头函数是没有函数体,this也不会指向本身 //箭头函数不会new来创建构造函数的实例,它没有重复使用的构造能力,不能用new关键字来调用箭头函数,因此也不需要 构造原型了,不会自动生成prototype属性 //箭头...
  • JS的this总结(下)-ES6箭头函数this指向​ 在讲this之前,首先简单了解一下ES6箭头函数​ 最近在学习ES6的过程中,接触到了ES6中最受人们关注的一个特性:箭头函数,然后学习下去的时候,遇到了一个比较困惑的问题:箭头...
  • 普通函数和箭头函数this值可以一言以蔽之: 普通函数:this调用归 箭头函数this等同于上一层非箭头的函数的this值或全局对象(window或undefined)(严格模式this是undefined)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,234
精华内容 14,493
关键字:

箭头函数的this指向谁