zoukankan      html  css  js  c++  java
  • 改变this的指向

    一、this

    一般情况下,this是在运行时动态指定的,指向调用它的对象。

    在箭头函数中,没有自己的this值,它的this值继承自父作用域,是词法作用域,在定义的时候就被指定了,之后也不变。

    二、call、apply、bind的相同点

    1、都是用来改变函数的this指向的,执行目标函数的时候把目标函数的this执向改一下,并不会改变原函数的指向

    	function fn() {
    		console.log(this);
    	}
    	var obj = {
    		a:[4,5,6],
    		b:[7,8],
    	};
    	fn.apply(obj);        // {a: Array(3), b: Array(2)}
    	var f = new fn();     // { }
    	fn.call(obj);         // {a: Array(3), b: Array(2)}
    	var f2 = new fn();    // { }
    	fn.bind(obj)();       // {a: Array(3), b: Array(2)}
    	var f3 = new fn();    // { }
    

      

    2、第一个参数都是this要指向的对象

    3、都可以利用后续参数传参

    三、call、apply、bind的区别

    1、call和apply都是对函数直接调用,而bind方法返回的是一个函数,还需要()来进行调用。

    2、call是一个个的传参,apply是以数组的形式进行传参,bind也是一个个的传参。

    fn.call(target_object,name1,name2)

    fn.apply(target_object,[name1,name2])

    fn.bind(target_object,name1,name2)()

    fn.bind(targe_object)(name1,name2)

  • 相关阅读:
    Uva673 Parentheses Balance
    cordforce Educational Codeforces Round 47 补题笔记 <未完>
    cordforce 495 补题 <未完>
    linux 基本命令笔记
    app审核相关
    CATransform3D
    UITableView点击切换状态分析
    iOS大转盘抽奖
    被忽视的控件UIToolbar
    AVPlayerViewController视频播放器
  • 原文地址:https://www.cnblogs.com/1220x/p/11734884.html
Copyright © 2011-2022 走看看