当前位置: 首页 > 面试题库 >

为什么要使用javascript函数包装器(添加在coffeescript中)“。call(this)”

徐博雅
2023-03-14
问题内容

当我使用最新(1.0)版本的coffee-script时,一个简单的javascript输出看起来像这样(默认):

(function() {
  var a;
  a = 1;
}).call(this);

什么 .CALL(本) 做,哪些是添加它的原因是什么?


问题答案:

它正在创建一个函数,然后使用父函数/对象范围进行调用

.call和.apply是调用函数的不同方法。您基本上创建了一个函数,除了在自己的范围内设置a = 1之外,什么也不做。

在javascript中,您需要意识到每个函数都是一个对象,并且this是指当前对象/函数的内容。从函数内部使用.call(this)替代this,并将其替换为调用上下文中的替代。



 类似资料:
  • 问题 你想在函数上添加一个包装器,增加额外的操作处理(比如日志、计时等)。 解决方案 如果你想使用额外的代码包装一个函数,可以定义一个装饰器函数,例如: import time from functools import wraps def timethis(func): ''' Decorator that reports the execution time. '''

  • 问题内容: 在较高的层次上,我知道我们需要通过使用它们各自的包装类在Java集合中使用它们来“包装”原始数据类型,例如int和char。我想了解Java集合如何在低级询问:“为什么我们需要将原始数据类型包装为对象才能在集合中使用它们?”在此先感谢您的帮助。 问题答案: 在虚拟机级别,这是因为与引用类型(例如java.lang.Object及其派生类型)相比,原始类型在内存中的表示方式非常不同。例如

  • 问题内容: 我们可以通过两种不同的方式在JavaScript中执行函数表达式: 命名函数表达式(NFE) : 匿名函数表达式 : 而且两个都可以用调用。我真的看不到为什么/何时应该使用匿名函数以及何时应该使用命名函数表达式。他们之间有什么区别? 问题答案: 对于匿名函数表达式,该函数是匿名的从字面上看,它没有名称。您要为其分配变量的变量具有名称,但是该函数没有。 _(更新:这在ES5中是正确的。从

  • 问题内容: 我已经看到不同的开发人员在javascript函数中包含分号,而有些还没有。哪个是最佳做法? 要么 问题答案: 分号后 函数的声明 是 没有必要的 。 a的语法在规范中描述为: 语法上没有分号,但可能想知道为什么? 分号用于将 语句 彼此分开,并且a 不是 语句 。 在代码执行之前进行评估,是用来解释这种行为的 常用词 。 术语“函数声明”和“函数声明”通常会错误地互换使用,因为ECM

  • 问题内容: 原始问题: 当我的JavaScript调用的功能在页面下方而不是在调用页面的下方定义时,JSHint会抱怨。但是,我的页面是用于游戏的,在下载全部内容之前,不会调用任何函数。那么为什么订单功能出现在我的代码中很重要? 我在里面吟。看来我需要花另一天的时间才能重新排序六千行代码。使用javascript的学习曲线一点也不陡峭,但是非常糟糕。 问题答案: tl; dr 如果在加载完成之前不

  • 本文向大家介绍为什么要用纯函数?相关面试题,主要包含被问及为什么要用纯函数?时的应答技巧和注意事项,需要的朋友参考一下 在此之前要先了解什么是纯函数,简单来说纯函数的定义有两个: 1.返回的结果只依赖于传入的参数。 2.执行过程中不产生副作用。 在这里就需要了解到什么是副作用 1.改变了外部变量或者对象属性 2.触发任何外部进程 3.发送http请求 4.调用其他有副作用的函数 5.…… 那么我们