js函数中的this
特殊对象this
一、标准函数中,this引用的是把函数当成方法调用的上下文对象
window.color = 'red';
let o={
color:'blue'
}
function sayColor(){
console.log(this.color);
}
sayColor(); // red
o.sayColor=sayColor;
o.sayColor(); //blue
定义在全局上下文中的函数sayColor()引用了this对象。这个this到底引用了哪个对象必须到函数被调用时才能确定。因此这个值在函数执行过程中可能会变。如果在全局上下文中调用sayColor(),结果输出red, 因为this指向window,而this.color相当于window..color.而再把sayColor()赋值给o之后,在调用o.sayColor(); this会指向o,即this.color相当于o.color,所以会显示blue
二、箭头函数中,this引用的是定义箭头函数的上下文
window.color = 'red';
let o={
color:'blue'
}
function sayColor=()=>{
console.log(this.color);
}
sayColor(); // red
o.sayColor=sayColor;
o.sayColor(); //red
在对sayColor()的两次调用中,this引用的都是window对象,因为这个箭头函数是在window上下文中定义的
三、在事件回调或定时回调中调用某个函数,this值指向的并非想要的对象。此时可以将回调函数写成箭头函数就可以解决问题
function king(){
this.royaltyName='henry';
setTimeout(
()=>{
console.log(this.royaltyName,1000);
})
}
function queen(){
this.royaltyName='elizabeth';
setTimeout(
function(){
console.log(this.royaltyName,1000);
})
}
new King();// henry
new Queen();//undefined
因为箭头函数中的this会保留定义该函数时的上下文
js函数中的this的更多相关文章
- 在JS函数中执行C#中的函数、字段
1.调用字段 cs文件的代码: ; protected void Page_Load(object sender, EventArgs e) { id = ; } js页面的代码: function ...
- js函数中获得当前被点击元素
问题描述:在html页面中点击<a>或者’按钮‘,进入js中的函数,在js函数中获得被点击那个<a>或‘按钮’元素 解决方法:方法一: html中: <a>标签:& ...
- js函数中this的不同含义
1.js函数调用过程中,js线程会进入新的执行环境并创建该环境的变量对象,并添加两个变量:this和arguments,因此可以在函数中使用这两个变量.需要注意的是,this变量不能重新赋值,而arg ...
- js函数中参数的传递
数据类型 在 javascript 中数据类型可以分为两类: 基本类型值 primitive type,比如Undefined,Null,Boolean,Number,String. 引用类型值,也就 ...
- js函数中的BOM和DOM
BOM 浏览器对象模型 screen对象 console.log(screen.width);// 屏幕宽度 console.log(screen.height);// 屏幕高度 console.l ...
- 深入理解JS函数中this指针的指向
函数在执行时,会在函数体内部自动生成一个this指针.谁直接调用产生这个this指针的函数,this就指向谁. 怎么理解指向呢,我认为指向就是等于.例如直接在js中输入下面的等式: console.l ...
- 将从model中获得的数据传到js函数中
刚遇到了一种情况,从controller中获得的model是一个集合,需要将这个集合循环放到标签中,并且需要为这些标签添加点击事件,每个值传入对应的点击事件函数中,由于model中的值是通过${ite ...
- js函数中的this关键字
关于这个this关键字,也是很多项目中常常被用到的,那么,有人也许会问,干嘛要用this呢,在函数被调用时,直接指明是什么对象在调用不就行了?还整那么个模模糊糊的概念出来干嘛?不过嘛,存在即真理,既然 ...
- js 函数中的this
资料 function 函数 没有"this"的持久概念, 调用函数时,创建this function hello(thing) { console.log(this + &quo ...
- js函数中写默认值的几种方式(常见的)
<script> <!--第一种写法,我更喜欢第一种写法直观一些--> function Person(name){ this.name = name || '默认名字乔丹'; ...
随机推荐
- AI写程序:让Manus分析一个github项目生成一个官方网站
提出问题,使用Manus帮我生成一个官方网站 提问: 我有一个github项目,是https://github.com/dependon/simple-image-filter ,请根据这个项目的内容 ...
- 在linux下QImage和QPixmap的内存泄漏和QPixmap线程安全问题
在linux下QImage和QPixmap的内存泄漏和QPixmap线程安全问题 为什么不在线程里面使用QPixmap(path),而是使用QPixmap::fromImage(QImage(path ...
- 【中文】【吴恩达课后编程作业】Course 4 - 卷积神经网络 - 第三周作业
[中文][吴恩达课后编程作业]Course 4 - 卷积神经网络 - 第三周作业 - 车辆识别 上一篇:[课程4 - 第三周测验]※※※※※ [回到目录]※※※※※下一篇:[课程4 - 第四周测验] ...
- HarmonyOS运动开发:打造你的专属运动节拍器
##鸿蒙核心技术##运动开发##Media Kit(媒体服务)# 前言 在运动过程中,保持稳定的节奏对于提升运动效果至关重要.无论是跑步.骑自行车还是进行高强度间歇训练(HIIT),一个精准的节拍器都 ...
- 题解:CF1045I Palindrome Pairs
题目链接:link. 首先上思路: 如果一个字符串是回文串,只有当其中最多的只有一个字符的出现次数是奇数. 注意我们可以将每个字符串的字符出现次数的奇偶性用一个 \(26\) 位的二进制表示. 接下来 ...
- 基于 Spread,在 Blazor 框架中导入 / 导出 Excel
引言 在现代 Web 应用开发中,处理 Excel 文件的导入和导出是一项常见且重要的需求.Blazor 框架是微软推出的用于构建具有 .NET 强大功能的交互式客户端 Web UI 的相对较新的框架 ...
- HyperWorks的四面体网格剖分
HyperMesh 向用户提供了若干种生成四面体网格的方法.标准四面体网格剖分(Standard Tetramesh)基于一个已有的封闭壳单元包络而成的空间,在合理设置参数的基础上生成四面体网格.标准 ...
- idea maven 打包错误 [ERROR] javac options source files
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-c ...
- array_map函数在PHP类中调用内部方法简介
http://www.dangkai.com/ArticlePage/Article21339.htm
- 常见php正则表达式
$str=preg_replace("/\s+/", " ", $str); //过滤多余回车 $str=preg_replace("/<[ ] ...