js--call、箭头函数/匿名函数

js中的this指向(较简单的几种):

1.普通函数的this指向window;

2对象方法指向当前对象;

3.()=》箭头函数指向定义时的对象;

apply和call可以改变当前的this指向,但是不能改变箭头函数的指向

function foo() {
  return () => {
    return () => {
      return () => {
        console.log(‘id:‘, this.id);
      };
    };
  };
}

var f = foo.call({id: 1});

var t1 = f.call({id: 2})()(); // id: 1
var t2 = f().call({id: 3})(); // id: 1
var t3 = f()().call({id: 4}); // id: 1

上面举了个例子,说明箭头函数的this是不能改变的,相反,如果是普通匿名函数,就可以改变:

function foo() {
  return () => {
    function() {
        console.log(‘id:‘, this.id);
    };
  };
}

var f1 = foo.call({id: 1})()()//undefined;
var f2 = foo().call({id: 1})()//undefined;
var f3 = foo()().call({id: 1})//1

前两个this最后指向了window,最后一个指向{ID:1}

时间: 2024-08-07 05:18:37

js--call、箭头函数/匿名函数的相关文章

[Js/Jquery]立即执行匿名函数

摘要 有时使用js写了一个匿名方法,需要立即执行.因为没有方法名称,无法在其它地方调用. 匿名函数 匿名函数,可以认为是没有方法名称的函数. js中如果想执行匿名函数,结构如下: (function () { //逻辑代码 })() 使用()将匿名函数括起来,后面再加一对小括号(包含参数列表). 例如: alert((function (x, y) { return x + y; })(2, 3)); 命名函数自调用 (function myfunc() { alert("23333"

速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数

[源码下载] 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函数返回值 可变函数 匿名函数 闭包函数 回调函数 示例1.函数的相关知识点 1(基础)function/function1.php <?php /** * 函数的相关知识点 1(基础) */ // 可以在相关的 function 声明语句之前调用该函数 f1(); function f1() { echo "f1"; echo "<br />"; } // 这里调用

day15 内置函数 , 匿名函数

内置函数      匿名函数 python提供的常用的功能,方便开发使用. dir #将对象所有的方法发放置在一个列表中,并返回 print (dir(str)) print (dir(int)) range #函数可创建一个整数对象,一般用在for循环中next #内部实际使用了__next__方法,返回迭代器的下一个项目bool #值用于将给定参数转换为布尔类型,如果没有参数,返回 False int #函数用于将一个字符串或数字转换为整型 print(int(12.73)) #浮点型的,取

python学习三十三天函数匿名函数lambda用法

python函数匿名函数lambda用法,是在多行语句转换一行语句,有点像三元运算符,只可以表示一些简单运算的,lambda做一些复杂的运算不太可能.分别对比普通函数和匿名函数的区别 1,普通的函数用法 def func(): print('aaa') func() 2,匿名函数的用法 f=lambda x,y:x*y m=f(3,5) print(m) 输出结果 15 匿名比较复杂的用法条件判断,匿名函数一般搭配函数内置函数使用 map() 文章来自(www.96net.com.cn) 原文地

js事件绑定--支持匿名函数解除绑定

废话不多说,直接上代码 var handlers = {}, bind = (function (){ if(window.addEventListener){ return function (el, type, callback, capture){ el.addEventListener(type, function (){ callback(); handlers[type] = handlers[type] || []; handlers[type].push(arguments.ca

关于js的闭包和匿名函数

关于js闭包.之前我一直以为是匿名函数,以为封闭式的创建即执行销毁就是闭包,其实这是匿名函数,不一样的.也没有闭包的使用经验. 后来去网上查了下才知道,闭包的意思是:函数内部还有函数,返回一个函数,内部函数可访问外部函数的变量. 一个最简单的案例: a是外部函数,b是内部函数,b可以使用a的变量i,调用a函数返回b函数,执行c既是执行b.其实也就意味着在a函数的外部,读取到了a函数内部的变量值. a中的变量i将一直在内存中,直至c变量删除. 删除变量:delete c; { let a=func

js 中特殊形势的函数-匿名函数的应用

javascript中的匿名函数,那什么叫做匿名函数? 匿名函数就是没有函数名称:演示代码: 1 <script> 2 function(x,y){ 3 return x+y //这个就是一个匿名函数,没有函数名,但是这个函数不能调用.如何调用呢? 4 } //要声名一个变量,然后把这个匿名函数的执行的代码,和返回值赋值给声名的变量 5 </script> javascript中的函数也是一种数据类型,只不过这种特殊类型有两个重要的特性: 1.他们所包含的是代码. 2.他们是可以执

js基础之javascript函数定义及种类-普通涵数-自执行函数-匿名函数

普通函数 1.不带参数 function fucname(){ alert("hello"); } funcname() 2.带参数 function funcname(arg){ alert("hello"); } funcname("Brin") 普通函数,自执行函数 1.不带参数 (function(){ alert(123); })() 2.带参数 (function(arg){ alert(123); })("Brin&quo

立即执行函数—匿名函数

JS中关于(function( window, undefined ) {})(window)写法的理解 2013年01月04日 ? 综合 ? 共 672字 ? 字号 小 中 大 ? 评论关闭 在jquery中我们经常看到以下这段代码:;(function ( $, window, document, undefined ){ //函数体内具体代码 })(jQuery, window,document); 首先说说非常值得提倡的几点:1.代码最前面的分号,可以防止多个文件压缩合并以为其他文件最后