this、call和apply

微信数据库读取解密脚本 聊天记录查看工具,支持所有微信版本,后期将支持企业微信[Windows] (1)获取微信昵称、微信账号、微信手机号、微信邮箱、微信KEY的基址偏移(2)获取微信的微信昵称、微信账号、微信手机号、微信邮箱、微信KEY、微信原始ID(wxid_******)(3)获取微信文件夹路径(4)支持查看聊天记录查看(5)根据key解密微信数据库(6)提供数据库部分字段说明(7)支持微信多开场景,获取多用户信息等(8)微信需要登录状态才能获取数据库密钥(9)支持导出聊天记录为html,备份微信聊天记录,方便查看(10)合并多个数据库,方便查看。 阅读详情

JavaScript总是指向一个对象,指向哪个对象是在运行时基于函数的执行环境动态绑定的,而非函数声明时的环境。

this的指向

除去不常用的with和eval的情况,具体到实际应用中,this的志向大致可以分为以下4种。

  1. 作为对象的方法调用。
  2. 作为普通函数调用。
  3. 构造器调用。
  4. Function.prototype.call或Function.prototype.apply调用。
作为对象的方法调用

当函数作为对象的方法被调用时,this指向该对象:

var obj = {
	a:1,
	getA:function(){
		alert(this === obj);//输出:true
		alert(this.a);// 输出:1
	}
};
obj.getA();
作为普通函数调用

当函数不作为对象的属性被调用时,也就是我们常说的普通函数,此时的this总是指向全局对象。在浏览器的JavaScript里,这个全局对象是window对象。

window.name = 'globalName';
var getName = function(){
	return this.name;
};
console.log(getName());// 输出:globalName
//或者
window.name = 'globalName';
var myObject = {
	name: 'zee',
	getName: function(){
		return this.name;
	}
};
var getName = myObject.getName;
consolelog(getName());// globalName
构造器调用

JavaScript中没有类,但是可以从构造器中创建对象,当用new操作符调用函数时,该函数总会返回一个对象,构造器里的this就指向返回的这个对象

var MyClass = function(){
	this.name = 'zee';
};
var obj = new MyClass();
alert(obj.name);// 输出:zee

但用new构造器时,还要注意一个问题,如果构造器显示地返回了一个object类型的对象,那么此次运算结果最终会返回这个对象

var MyClass = function(){
	this.name = 'zee';
	return {
		name: anne'
	}
};
var obj = new MyClass();
alert(obj.name); // 输出:anne

如果构造器不显式地返回任何数据,或者是返回一个非对象类型的数据,就不会造成上述问题:

var MyClass = function(){
	this.name = 'zee';
	return 'anne';// 返回string类型
};
var obj = new MyClass();
alert(obj.name); // 输出:zee
Function.prototype.call或Function.prototype.apply调用

跟普通的函数调用相比,用Function.protoype.call或Function.prototype.apply可以动态地改变传入函数的this

var obj1 = {
	name: 'zee',
	getName: function(){
		return this.name;
	}
};
var obj2 = {
	name: 'anne'
};
console.log(obj1.getName());// 输出:zee
console.log(obj1.getName.call(obj2));// 输出:anne

call和apply

call和apply用途

  1. 改变this的指向
var obj1 = {
	name: 'zee'
};
var obj2 = {
	name: 'anne'
};
window.name = 'window';
var getName = function(){
	alert(this.name);
};
getName();//window
getName.call(obj1);//zee
getName.call(obj2);//anne
document.getElementById('div1').onclick = function(){
	var func = function(){
		alert(this.id);
	}
	func.call(this);
}
  1. Function.prototype.bind
    大部分高级浏览器都实现了内置的Function.prototype.bind,用来指定函数内部的this指向,即使没有原生的Function.prototype.bind实现,我们可以模拟实现
Function.prototype.bind = function(context){
	var self = this; //保存原函数
	return function(){// 返回一个新的函数
		return self.apply(context, arguments);//执行新的函数的时候,会把之前传入的context当作新函数体内的this
	}
};
var obj = {
	name: 'zee'
};
var func = function(){
	alert(this.name);//输出zee
}.bind(obj);
func();
  1. 借用其他对象的方法
var A = function(name){
	this.name = name;
};
var B = function(){
	A.apply(this, arguments);
};
B.prototype.getName = function(){
	return this.name;
};
var b = new B('zee');
console.log(b.getName());//输出:'zee'
【AI蛋白预测实战】零门槛在Colab上运行AlphaFold2全流程解析 本文为零基础用户提供了在谷歌Colab平台上运行AlphaFold2进行蛋白质结构预测的完整实战指南。通过ColabFold项目,用户无需本地高性能硬件,即可免费利用云端GPU完成从序列输入到3D结构生成和结果可视化的全流程,大幅降低了AI蛋白预测的技术门槛。 阅读详情

相关推荐

WIFI CSI动作识别数据集全解析:从数据采集到深度学习应用

本文全面解析了利用商用Wi-Fi设备的信道状态信息进行动作识别的完整流程。文章以经典WiSA数据集为例,深入剖析了CSI数据的采集原理、结构特点,并详细阐述了从原始数据预处理、特征工程到深度学习模型(如CNN-LSTM融合架构)构建与优化的关键技术,旨在为研究者提供从数据到应用的全链路实战指南。

r2s3t4的博客 281

对this的理解、bind、call、apply的区别,手写call和apply

this的理解,bind、call、apply的区别,手写call和apply,Function.prototype

hqianyi的博客 302

ThinkPad T14 Gen 2与T14P系列对比

表格您的需求推荐机型日常办公、出差、文档处理、视频会议✅(够用、轻便、便宜)视频剪辑、3D建模、编程编译、AI训练、高色准设计✅(性能强、屏幕好、扩展佳)想要未来 5 年不换机✅T14p预算低于 5000 元✅T14 Gen 2(或考虑 T14 Gen 3/4)T14p 2025 款 ≠ 小改款,而是架构级升级它从“高性能笔记本”进化为“AI 移动工作站”,核心差异在于NPU + Ultra 平台 + 全面屏显 + 超长续航。如果您从事AI 开发、视频创作、工程仿真、多任务编程。

tecoes的博客 2738

02 知识点回顾——this、call和apply

写在前面 这个系列的文章是通过对《JavaScript设计模式》一书的学习后总结而来,刚开始觉得学习的时候只需看书即可,不用再另外记录笔记了,但是后面发现书中有些内容理解起来并不是很容易,所以结合书中的描述就将自己的理解也梳理了一下并将它记录下来,希望和大家一起学习,文章中如果有我理解错的内容,请各位批评指正,大家共同进步~ 目录 写在前面 目录 内容 this基础知识 thi...

X北辰北的博客 901

Hodgkin-Huxley Model

介绍了经典的动力学模型:HH Model

weixin_73557167的博客 2474

Device Mapper 代码分析

Device Mapper(DM)是Linux 2.6全面引入的块设备新构架,通过DM可以灵活地管理系统中所有的真实或虚拟的块设备。DM以块设备的形式注册到Linux内核中,凡是挂载(或者说“映射”)于DM结构下的块设备,不管他们是如何组织,如何通讯,在Linux看来都是一个完整的DM块设备。因此DM让不同组织形式的块设备或者块设备集群在Linux内核面前有一个完整统一的DM表示。一、DM

SonicLing的专栏 1万+

call和apply修改this指向

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script&gt

qq_24871849的博客 341

基于ProXmoX VE的虚拟化家庭服务器(篇一)—ProXmoX VE 安装及基础配置

ProxmoxVE是一款套开源的虚拟化管理软件,用户可通过网页的方式来管理服务器上使用kvm以及lxc技术运行的虚拟机。同时提供了一些先进功能的支持,如集群、HA等。PVE虽然是开源,却是由一个商业公司在运营、更新以及维护。...

隔壁老瓦的专栏 6321

利用call和apply改变this指向

8.call/apply方法 这两个方法其实就是改变this指向的 function Person(){ this.name='caiyun'; this.age=3; } var obj={}; Person.call(obj);//其实任何函数的执行,比如说test,真正的执行样式是test.call() //这里的执行流程是这样的:函数执行后,内部会有一个this,这时候th...

weixin_42444564的博客 734

S32K3 MCAL配置 【MCU、PORT、DIO】

1、s32k3时钟源可由PLL, FXOSC, FIRC, SIRC, and SXOSC五种时钟源生成,可按照手册推荐配置。目标是在在S32K344板子上点亮红色LED灯,需要配置的有MCU、PORT、DIO模块。MCU最主要的是时钟配置,要翻看芯片手册,理解时钟树。1、通用配置中,没有什么特殊需求按照demo配置就好。1、配置MC_CGM mux 0 clocks时钟。1、外部晶振配置按照实际项目原理图进行配置。1、外部晶振配置,按照实际项目配置。1、PLL时钟按照手册进行配置。

weixin_43741076的博客 3243

(一)激光线扫描-三维成像原理

激光线扫描是一种使用激光作为光源,通过特定的扫描设备(如光学镜头、电机驱动的镜头或电子扫描设备)将激光束引导到目标表面,并按照预定的路径进行扫描的技术。这种技术通常用于测量、检测、打印、切割等多种应用中。

FlyWine的博客 3629

this和apply、call、bind

JavaScript 的 this 总是指向一个对象,而具体指向哪个对象是在运行时基于函数的执行环境动态绑定的。 this的使用场景 1. 普通函数调用 const name = "oliver"; function getName(){ alert ( this === window ); // 输出:true alert ( this.name ) //输出: oliver } getName(); /* 当函数不作为对象的属性被调用时,也就是普通函数方式,此时的 this 总是指 向全局对象。.

断桥铲雪的博客 301

uniapp - H5网页打包运行报错Failed to load resource: net::ERR_FILE_NOT_FOUND(uniApp打包成H5部署到服务器,打包h5白屏并报错页面空白)

Failed to load resource: net::ERR_FILE_NOT_FOUND,uniapp 坑之打包之后白屏,uniapp打包h5,HBuilderX 打包H5后空白报错 Failed to load resource: net::ERR FILE NOT_FOUND,UNI-APP H5应用白屏(空白页)解决方案,白屏并报错Failed to load resource: net::ERR_FILE_NOT_FOUND,uniapp开发,打包成H5部署到服务器,uniapp打包之后首页

🏆 前端领域优质创作者 3578

深入解析 JS 中的 this、call、apply 和 bind

call、apply 和 bind都可以改变函数的this对象指向call、apply 和 bind第一个参数都是this要指向的对象,如果如果没有这个参数或参数为undefined或null,则默认指向全局windowcall、apply 和 bind都可以传参,但是apply是数组,而call是参数列表,且apply和call是一次性传入参数,而bind可以分为多次传入bind是返回绑定this之后的函数,applycall则是立即执行。

qq_39279448的博客 1084

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

JS中this的情况,apply,call和bind的理解

JS中this的情况,apply,call和bind的理解

TJ_Helen的博客 182

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

掌握apply和call,解密JavaScript的this指向

apply和call是JavaScript中的两个方法,它们都可以用来调用函数,改变函数中的this指向。函数中的this指向通常指向调用函数的对象,但是在使用apply和call方法调用函数时,可以手动修改函数中的this指向,从而修改函数的执行环境。apply和call的作用类似,但它们的参数列表有所不同。apply方法的参数是一个数组,该数组中的元素作为参数传递给函数调用。这样可以方便地传递多个参数,也可以使用数组的切片方法来动态地传递参数,达到动态定义参数的效果。而。

你若盛开,清风自来 1309

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

this指向和Call、apply、bind

总结 1.浏览器里,在全局范围内的this 指向window对象; 2.在函数中,this永远指向最后调用他的那个对象; 3.构造函数中,this指向new出来的那个新的对象; 4.Call、apply、bind中的this被强绑定在指定的那个对象上; 5.箭头函数中this比较特殊,箭头函数this为父作用域的this,不是调用时的this.要知道前四种方式,都是调用时确定,也就是动态的,而箭头函数的this指向是静态的,声明的时候就确定了下来; 6.apply、call、bind都是js给函数内置的一些

Zhoujia1316的博客 254

this call和apply

this call和apply

weixin_47008777的博客 162

理解this及call,apply和bind的用法

关注公众号前端开发博客,回复“加群”加入我们一起学习,天天进步“JavaScript中最容易被误解的一个方面是this关键字。在这篇文章中,将通过学习四个规则来确定此关键字引用的内容。...

前端开发博客 2553

this和call、apply小记

this 以函数调用时,this指的时window 以方法调用时,this指的是方法的对象 以构造函数调用时,this指的是函数创造的对象 使用call和apply时,this指的是call和apply指定的对象 call和apply 这两个都是函数对象的方法,需要函数对象来调用 当对函数调用call和apply时,都会调用函数执行 当调用call和apply可以调用一个对象作为第一个参数,...

行大于言 209

this指向和bind—call—apply

this和bind&&call&&applythis 关键字call 和 apply 和 bindcallapplybind this 关键字 每一个函数内部都有一个关键字是 this 可以让我们直接使用的 重点: 函数内部的 this 只和函数的调用方式有关系,和函数的定义方式没有关系 函数内部的 this 指向谁,取决于函数的调用方式 全局定义的函数直接调用,this => window function fn() { console.log

牛先森家的博客 246

call和apply的this指向问题

call( )方法和apply( )方法用法:    .call( this指向,参数 )    .apply( this指向,参数数组 ) 注意:    这里的this指向必须是引用类型。    如果this被强行改变为值类型,那么能够转为对应包装类型的都会转,不能转的 指向window&lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&...

Mr.ShyZhang趟过的前端“小路坑” 2246

call、apply、bind和this

前言之前较为系统的学习了JavaScript的this用法,但是没多久又忘记了。从网上看到些不错的经验,所以借鉴了下,感觉挺不错的。简介说到this,我们会想到function,各种面试之类的考察function中的this,平时也经常用得上。这时我们要明确两件事:1、function是一个对象;2、function是要在特定上下文执行的。1、call方法call可以用来改变函数的this对象指向,

xixi 344

this指向问题以及call、apply、bind的用法和区别

this指向问题以及call、apply、bind的用法和区别

下雨打伞干嘛的博客 523

理解JavaScript中的this、call、apply和bind

一、JavaScript中的js指向 首先我们应该知道,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,可以简单的理解为,this的最终指向的是那个调用它的对象。 普通函数调用,此时 this 指向 window。 function a(){ var name = "Qiu; console.log(this.name); //undefined console.log(this); //Window } a(); 按照我们上

QIu_zero的博客 309

函数的call()、apply()和this——JS

文章目录函数也是对象,它也有方法。THIS小结 函数也是对象,它也有方法。 call()和apply()这两个方法都是函数对象的方法,需要通过函数对象来调用 当对函数调用call()和apply()都会调用函数执行。 fun.call()\fun.apply() 和 fun() 的区别: 在调用call()和apply()可以将一个对象指定为第一个参数,即:此时这个对象将会成为函数执行时的this。 (因为call()和apply()可以传参) 不使用call和apply时: function fu

mantou_riji的博客 558
上一篇: 原型模式&原型继承
下一篇: 闭包的更多作用
DoubleSRZee
博客等级 码龄10年 7粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值