首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >改变this指向了解一下

改变this指向了解一下

作者头像
马克社区
发布于 2022-07-22 12:43:58
发布于 2022-07-22 12:43:58
28400
代码可运行
举报
文章被收录于专栏:高端IT高端IT
运行总次数:0
代码可运行

首先呢,我们知道return可以改变this指向

function Fn(name){ this.name=name; return {};//undefined,改变了this的指向,指向该未定义对象 } var fn=new Fn(“maomin”); console.log(fn.name);

另一种是我们常用的方法,就是给将this赋值给一个变量。

function fn1(age) { var that=this; that.age=age; console.log(this.age)//21 } fn1(“21”);

但是上面的方法太low了。 接下来我们说一下关于改变this指向的三种高大上方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
call()
(1)可以改变匿名函数this指向
12

var box=document.querySelector("#box"); box.onclick = function(){   (function(){     console.log(this); //box   }).call(this); };

(2)可以继承方法

function Fn8(name,girlfriend) { this.name=name; this.girlfriend=girlfriend; } function Fn9(name,girlfriend) { Fn8.call(this,name,girlfriend);//第一个传的是一个对象,就是你要借用的那个对象,除了第一个参数后面的参数将作为实际参数传入到函数中。 console.log(this.name,this.girlfriend);//maomin, xqm } var fn9=new Fn9(“maomin”,“xqm”);

更多请见:https://blog.csdn.net/weixin_44519496/article/details/120127993

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
你真的懂this指向?
先搞清楚一点,如果this在函数里面,那么它指向的是“函数执行后”的上一级调用对象。
马克社区
2022/07/25
6370
js难点之原型,真难?
构造函数的首字母必须大写,用来区分于普通函数; 这里的this指向实例化后的对象p;
马克社区
2022/07/22
3560
【前端面试】this的指向
下面来看一道例题 a = { b:function(){ console.log(this); }, c:()=>{ console.log(this); } } 问: a.b a.c e= a.b f=a.c 主要是考察普通函数和匿名函数的this指向。下面来回顾一下this的指向。
程序媛夏天
2024/01/18
2250
【前端面试】this的指向
WEB前端2020年更新实用代码段
let jsonData = { id: 1, status: “OK”, data: [‘a’, ‘b’] }; let { id, status, data: number } = jsonData; console.log(id, status, number ); // 1,“OK”,[a, b]
马克社区
2022/07/12
2360
你听过js中函数执行吗
function demo_one(){ console.log(“this is demo-one”); }
马克社区
2022/07/25
2K0
关于Vue在面试中常常被提到的几点(持续更新……)
我们在业务组件中,会经常使用循环列表,当时用v-for命令时,会在后面写上:key,那么为什么建议写呢?
马克社区
2022/05/19
2970
This指向与改变This指向
在 ES5 中,其实 this 的指向,始终坚持一个原理:this 永远指向最后调用它的那个对象。
小城故事
2023/02/27
1.4K0
this指向
这些 this 的指向,是当我们调用函数的时候确定的。调用方式的不同决定了this 的指向不同
梨涡浅笑
2020/10/27
1.3K0
this指向
JS中的this指向问题
可能会误以为window.doSth()是调用的,所以是指向window。虽然本例中window.doSth确实等于doSth。name等于window.name。上面代码中这是因为在ES5中,全局变量是挂载在顶层对象(浏览器是window)中。 事实上,并不是如此。
步履不停凡
2019/09/11
1.5K0
你不可不知的JS面试题(第二期)
// 父类 function P(name) { this.name = name; } // 父类方法 P.prototype.get=function(){ return this.name; } // 子类 function C(name){ P.call(this,name); } // 封装继承。也就是C.prototype.proto = P.prototype function I(Pfn,Cfn){ var prototype = Object.create(Pfn.prototype); prototype.constructor = Cfn; Cfn.prototype = prototype; } // 调用继承方法,并传入参数 I(P,C);
马克社区
2022/07/11
2290
面试官:JS的数据类型你了解多少?(一万字总结)
作为JavaScript的入门知识点,Js数据类型在整个JavaScript的学习过程中其实尤为重要。最常见的是边界数据类型条件判断问题。
马克社区
2022/06/24
2620
面试官问:JS的this指向
面试官出很多考题,基本都会变着方式来考察this指向,看候选人对JS基础知识是否扎实。读者可以先拉到底部看总结,再谷歌(或各技术平台)搜索几篇类似文章,看笔者写的文章和别人有什么不同(欢迎在评论区评论不同之处),对比来看,验证与自己现有知识是否有盲点,多看几篇,自然就会完善自身知识。
若川
2020/03/19
8060
JavaScript进阶教程(4)-函数内this指向解惑call(),apply(),bind()的区别
函数声明如果放在if-else的语句中,在IE8的浏览器中会出现问题,所以为了更好的兼容性我们以后最好用函数表达式,不用函数声明的方式。
AlbertYang
2020/09/08
6880
JavaScript进阶教程(4)-函数内this指向解惑call(),apply(),bind()的区别
this指向
这些 this 的指向,是当我们调用函数的时候确定的。调用方式的不同决定了this 的指向不同
星辰_大海
2020/10/26
1.1K0
this指向
我攻克的技术难题:JS中改变this的指向:call()、apply()、bind()
在之前的学习中,我发现在学习了很多JS方法后,却没有真正的应用起来或者是理解什么时候需要使用这些方法,导致自己很快就遗忘自己所学过的知识。
用户10637692
2024/01/23
4501
我攻克的技术难题:JS中改变this的指向:call()、apply()、bind()
[JavaScript进阶]从JavaScript原型到面向对象
首先给出结论,JavaScript 的本身是支持面向对象的,它本身具备着强大灵活的 OOP 语言能力。但是对于使用过基于类的语言 (如 Java 或 C++) 的开发人员来说,JavaScript 确实有点令人困惑,因为它是动态的,并且本身不提供一个 class 实现。虽然在 ES6 中引入了 class 关键字,但它只是一个语法糖,本质还是基于JavaScript 的原型来实现的。
用户1462769
2019/08/12
7080
[JavaScript进阶]从JavaScript原型到面向对象
this 指向
原文链接:https://note.noxussj.top/?source=cloudtencent this 指向分为两种情况,一种是普通函数中使用的 this,另外一种是箭头函数中的 this。
菜园前端
2023/05/24
7730
【最简单最全面】一文讲清楚五大this指向,this到底指向哪里?
this 是 JavaScript 中最迷惑、最核心的概念之一。它的值不是取决于函数在哪声明的,而是取决于它是如何被调用的。
watermelo37
2025/05/21
2890
【最简单最全面】一文讲清楚五大this指向,this到底指向哪里?
JS高级原型以及函数调用方式
Javascript 规定,每一个(构造)函数都有一个 prototype 属性,指向另一个对象。这个对象的所有属性和方法,都会被构造函数的实例继承。这也就意味着,我们可以把所有对象实例需要共享的属性和方法直接定义在 prototype 对象上,以便让同一类型的对象共享方法或其它成员
用户6256742
2024/06/13
4890
JS高级原型以及函数调用方式
前端开发之彻底搞懂this指向
在常见的编程语言中,几乎都有this这个关键字(Objective-C中使用的是self),但是JavaScript中的this和常见的面向对象语言中的this不太一样:
青梅煮码
2023/03/13
1.2K0
相关推荐
你真的懂this指向?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档