首页 > 其他分享 >ES6的箭头函数,箭头函数不会创造块作用域,无法生成一个独立的环境,this指向上层的this

ES6的箭头函数,箭头函数不会创造块作用域,无法生成一个独立的环境,this指向上层的this

时间:2023-11-14 18:45:52浏览次数:26  
标签:函数 指向 test4399 作用域 getColor 箭头 var color

var color = 'green';
var test4399 = {
    color: 'blue',
    getColor: function(){
        var color = "red";
        alert(this.color);
    }
}
var getColor = test4399.getColor;
getColor();
test4399.getColor();

以上 JavaScript 代码执行后, 浏览器 alert 出来的结果分别是

A
undefined,red

B
green,blue

C
undefined,blue

D
green,undefined

E
blued,undefined

正确答案:B

1.getColor() var getColor = test4399.getColor;
即var getColor = function(){var color = "red";alert(this.color);};
执行getColor()函数时this指向的window,因为window.color为green,所以弹出green

2.test4399.getColor(),此时this指向的是test4399,test4399.color为blue,所以弹出blue

getColor();相当于普通的函数调用,此时this指向window,this.color应该为全局变量的值

test4399.getColor();此时this指向调用函数的对象test4399,因此this.color应该为对象的属性值

这题的重点只是this关键字的用法,指向运行时的对象,而不是定义时的对象,表示函数的运行时。
作为总结:
1、函数作为对象的方法被调用,this指向调用者!
2、用于构造函数,this指向新对象
3、ES6的箭头函数,箭头函数不会创造块作用域,无法生成一个独立的环境,this指向上层的this

标签:函数,指向,test4399,作用域,getColor,箭头,var,color
From: https://www.cnblogs.com/longmo666/p/17832277.html

相关文章

  • 任何用let或const声明的属性不能够从它被声明的作用域中删除。任何使用 var 声明的属
    请问以下JS代码的输出结果是什么?leta=1;letobj={x:1}deletea;deleteobj.x;delete2;console.log(a);console.log(obj.x);console.log(2);A1、1、2B1、undefined、2C1、undefined、undefinedDundefined、undefined、undefined正确答案:B需要明确的......
  • 无涯教程-Dart - compareTo函数
    它返回一个整数,指示两个数字之间的关系。compareTo-语法Number.compareTo(x)x  - 代表一个数字。compareTo-返回值返回值-0  - 如果值相等。1  - 如果当前数字对象大于指定的数值。-1 - 如果当前数字对象小于指定的数字值。compareTo-......
  • 无涯教程-Dart - ceil函数
    此属性返回上限值,该上限值是大于或等于数字的最小整数。ceil-语法Number.ceil()ceil-示例voidmain(){vara=2.4;print("HiLearnfkTheceilingvalueof2.4=${a.ceil()}");}它将产生以下输出-。HiLearnfkTheceilingvalueof2.4=3参考链接http......
  • Python基础之map()函数
    map()函数会根据提供的对指定的可迭代对象的每个元素进行运算,并将返回运算结果的迭代器。先去将几个例子,这样比较通俗易懂。eg1:输入数据型a=map(int,input().split())输入:1213结果为:分析:map(int,input().split())将输入的值(input.split()的东西也叫做可迭代对象)通过空格......
  • YCOJ734 [ 20231114 NOIP 模拟赛 T3 ] 二次函数
    题意给定\(n\)个形如\(f(x)=(x-m)^2+k\)的二次函数。\(1,m,k\)表示加入一个顶点位\((m,k)\)的二次函数。\(2,x,t\)表示删除所有\(f(x)\let\)的二次函数。求每次操作结束后还剩余几个二次函数。Sol注意到题中二次系数为\(1\),这就意味着每一个函......
  • 无涯教程-Dart - isEven函数
    如果数字为偶数,则此属性返回true。isEven-语法num.isEvenisEven-示例voidmain(){intposNum=10;print(posNum.isEven);}它将产生以下输出-true参考链接https://www.learnfk.com/dart-programming/dart-programming-iseven-property.html......
  • Python函数参数传递中的可变参数
    Python函数参数传递中*args和**kargs在Python中,*args和**kwargs是用于处理可变数量的参数的特殊语法。*args:*args是一个元组(tuple),它允许你将不定数量的非关键字参数传递给函数。这意味着你可以在函数定义时指定一些参数,同时允许调用函数时传递不同数量的参数。通常用*......
  • 常用SQL函数
    随机RAND() 选择判断selectif例:selectif(consignment=0,'否','是') 条件选择casewhen...thenend例:casesupplierTypewhen1then'准目录供应商'when2then'sourcing供应商'end 字符串拼接:CONCAT拼接两个及两个以上字符串 GROUP_CONCAT用逗号分隔分组......
  • GEE中核函数在不同缩放级别下的区别
    问题:2个问题:1.内核都采用单位参数,可以是像素或米,文档指出:内核的测量系统(“像素”或“米”)。如果内核以米为单位指定,则当缩放级别更改时它将调整大小。我认为这是不正确的,如果内核以像素为单位指定,它会随着金字塔级别的变化而改变缩放级别吗?您可以在上面的代码中比较圆内核(......
  • MSSQL类型转换函数-强制类型转换
    MSSQL类型转换函数-强制类型转换(STR、CONVERT、CAST、PARSE)转换函数将值从一种数据类型转换为另一种。在数据库中很多时候需要把一个类型的数据转换成另一个数据类型来进行运算或者输出显示,这种转换有的时候可以隐士的转换有的时候就需要强制类型转换。在保证数据正确的......