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

JavaScript中的此运算符

谷梁镜
2023-03-14
问题内容

假设我有如下JavaScript代码

      myClass = function(){
          function doSomething(){
              alert(this); // this1 
          }
      } 
      alert(this); //this2

这两个“ this”对象是指什么?


问题答案:

this全局执行上下文中的值引用全局对象,例如:

this === window; // true

对于功能代码,实际上取决于您如何调用该功能,例如,在以下this情况下隐式设置该值:

调用没有 基础对象 引用的函数

myFunc();

this值还将引用全局对象。

调用绑定为对象属性的函数

obj.method();

this值将参考obj

使用new运算符

new MyFunc();

this值将引用从继承的新创建的对象MyFunc.prototype

另外,可以在调用函数时使用callapply方法显式设置该值,例如:

function test(arg) {
  alert(this + arg);
}
test.call("Hello", " world!"); // will alert "Hello World!"

call和之间的区别applyapply,您可以使用Array或arguments对象正确传递任意数量的参数,例如:

function sum() {
  var result = 0;
  for (var i = 0; i < arguments.length; i++) {
    result += arguments[i];
  }
  return result;
}

var args = [1,2,3,4];
sum.apply(null, args); // 10

// equivalent to call
sum(1,2,3,4); // 10

如果第一个参数的值call或者applynullundefined,该this值将引用全局对象。

(请注意,将来这会随着ECMAScript 5的变化而改变,callapplythisArg不更改的情况下传递值)



 类似资料:
  • 问题内容: 给定以下JavaScript“类”定义,这是我想到此问题的最佳方式: 以及以下测试设置代码: 有什么方法可以使用加法运算符隐式创建为对象,如下所示… 而不是求助于… 如果不是,那么在此领域中关于通过算术运算符使自定义数字JavaScript对象可组合的最佳实践建议是什么? 问题答案: 据我所知,JavaScript(至少现在已经存在)不支持运算符重载。 我能建议的最好的方法是使用一个类

  • 主要内容:算术运算符,赋值运算符,字符串运算符,自增、自减运算符,比较运算符,逻辑运算符,三元运算符,位运算符运算符是用来告诉 JavaScript 引擎执行某种操作的符号,例如加号(+)表示执行加法运算,减号(-)表示执行减法运算等,本节我们就来介绍一下 JavaScript 中不同的运算符。 算术运算符 算数运算符用来执行常见的数学运算,例如加法、减法、乘法、除法等,下表中列举了 JavaScript 中支持的算术运算符: 运算符 描述 示例 + 加法运算符 x + y 表示计算 x 加 y

  • 算术运算符以数值(字面量或变量)作为其操作数,并返回一个单个数值。标准算术运算符是加法(+),减法( - ),乘法(*)和除法(/)。—— MDN 算数运算符是用来做算数运算的,如 + 这个符号,就是用来做加法操作。 1. N元运算 N 代表一个数,如一元运算,二元运算。 N元运算 表示由N个值产生一个新的值的规则。 如 * 就是一个二元运算符,他由两个数相乘产生第三个数。 JavaScript

  • 问题内容: 刚刚在下划线的来源中看到了这一点: 怎么办?我以前从未见过。 在开发人员中是否认为这是一种好习惯? 问题答案: 加号将字符串转换为浮点数。您提供的代码等效于以下代码:

  • 本文向大家介绍JavaScript中的运算符是什么?,包括了JavaScript中的运算符是什么?的使用技巧和注意事项,需要的朋友参考一下 让我们采用一个简单的表达式“ 4 + 5等于9”。这里4和5称为操作数,“ +”称为运算符。 JavaScript支持以下类型的运算符。 算术运算符 比较运算符 逻辑(或关系)运算符 赋值运算符 条件(或三元)运算符 例 这是一个说明运算符示例的示例-

  • 问题内容: 我正在处理由以前的开发人员编写的代码,并在查询中说: 这个查询是什么意思?等于吗?还是语法错误? 但是它没有显示任何错误或异常。我已经知道= 在MySQL的。 问题答案: TL; DR 这是安全的相等运算符。 像常规运算符一样,将两个值进行比较,结果为(不相等)或(相等);换句话说:yields 和yields 。 与常规运算符不同,of的值没有特殊含义,因此它永远不会产生可能的结果。