JS 之 call()函数

VSCode玩转STM32:手把手教你配置EIDE插件与OpenOCD调试(附野火DAP配置文件详解) 本文详细介绍了如何在VSCode中配置EIDE插件与OpenOCD进行STM32开发,特别针对野火DAP调试器提供了配置文件详解。从基础环境搭建到深度调试技巧,帮助开发者高效完成STM32项目开发,实现现代化嵌入式开发工作流。 阅读详情

call(thisArg,arg1,arg2.....)

a.call(b)

b:"喂?是a么,我这有点事儿办不了,你来帮帮我呗?"。

a:"OK,我来了!"。

var g="全局变量";
//构造函数
function A(){
	this.g="构造函数A中的变量";
}
//普通函数
function print(){
	console.log(this.g);
}
print.call(new A());

//输出:构造函数A中的变量

A对象想要打印出它的属性g,但是它没有这个方法,所以求助于print(),看起来好像A有了print方法,有点类似于继承。

实际上,调用print.call(new A())时修改了print()的this指向,使this指向了new A(),于是输出this.g的时候输出了A对象的属性g。

在JS中,这又被称为“对象冒充”。

实现继承

//实现继承
function A(name,price){
	this.name=name;
	this.price=price;
        this.func=function(){
            console.log("A");
        }
}

A.prototype.X="XXX";

function B(name,price,speed){
	A.call(this,name,price);
	this.speed=speed;
}

var a=new A("Good",100);
var b=new B("Master",12000,50);
console.log(a);
console.log(b);

输出:

A {name: "Good", price: 100, func: ƒ}
func: ƒ ()
name: "Good"
price: 100
__proto__:
X: "XXX"
constructor: ƒ A(name,price)
__proto__: Object

B {name: "Master", price: 12000, func: ƒ, speed: 50}
func: ƒ ()
name: "Master"
price: 12000
speed: 50
__proto__:
constructor: ƒ B(name,price,speed)
__proto__: Object

不难看出,B对象上有了A对象的属性和方法,当然仅仅是A对象自身的属性和方法,A对象的原型属性和方法不会被继承。

在非严格模式下,使用call方法调用函数不传入第一个参数,默认this的指向会绑定全局对象,例如上面第一个例子,不传入new A(),则打印出来的则会是全局下的g变量。

在严格模式下,不传入第一个参数,this的值会指向undefined,例如:

'use strict'
var x="xxx";
function show(){
	console.log(this.x);
}
show.call();

Uncaught TypeError: Cannot read property 'x' of undefined
  at show (study.html:12)
    at study.html:14





 

 

杂记 | 使用keycloak实现SSO单点登录(新手向,概念、原理、逻辑、详细步骤、难点解释) 使用keycloak实现SSO单点登录(概念、原理、逻辑、详细步骤、难点解释) 阅读详情

相关推荐

CST仿真提速秘籍:用好Local Mesh,别再让简单结构拖慢你的仿真速度

本文深入探讨了CST仿真中Local Mesh技术的应用,通过区域加密与全局排除策略,显著提升电磁仿真效率。针对5G天线阵列、微波滤波器等多尺度结构模型,提供了网格划分的黄金法则和实战技巧,帮助工程师优化仿真速度与精度,特别适用于电磁仿真和网格设置场景。

weixin_27134495的博客 406

JS中的 call( ) 方法

this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向。 call.(thisOject, arg1 ,arg2 ...) 我们单独说说call(),因为apply()和call差不多,只不过apply第二个参数必须传入的是一个数组,而call 第二个参数可以是任意类型。 obj1.(method).call(obj2,argument1,ar...

小镇青年 7万+

Win11+Ubuntu18.04+Ubuntu20.04三系统安装与卸载

以下情况均为个人情况:1.插入启动 U 盘后,登录时可以按F12(拯救者Y7000,不同电脑不同)进入BIOS,选择从启动盘启动。2.。3.5.在win基础上,安装第一个Ubuntu系统后,系统启动界面类似如下第一张图,Ubuntu不显示版本号。安装第二个Ubuntu系统后,系统启动界面如下第二张图,如果想更改启动项的名称,可自行查阅相关资料。

weixin_61686291的博客 2536

JavaScript中的call、apply、 bind的用法、实现以及三者之间的区别?

相信很多同学在面试中遇到这样的问题,今天我们就彻底搞懂JavaScript中的call、apply、 bind的用法、实现以及三者之间的区别,废话不多说,直接开撸!

富朝阳的博客 3044

无人驾驶汽车系统入门(三十二)——FEC算法:点云快速欧几里得聚类实战解析

本文深入解析了FEC算法在无人驾驶点云聚类中的高效应用,通过逐点处理策略和体素栅格预分割技术,实现了比传统欧几里得聚类快百倍的速度。文章详细介绍了算法原理、Python实现及参数调优指南,并对比了FEC与传统算法的性能差异,为无人驾驶系统开发提供了实用解决方案。

weixin_29065015的博客 485

运动目标成像必学:5分钟搞懂keystone变换原理与避坑指南

本文深入浅出地解析了雷达信号处理中的Keystone变换原理,它是解决运动目标距离徙动问题的关键技术。文章通过直观比喻和简化公式,阐述了该变换如何通过变量代换实现距离与慢时间的解耦合,将倾斜轨迹“掰直”,从而提升成像与检测性能。同时,文中重点指出了实际应用中关于大速度场景、插值误差、多目标处理及高阶运动补偿等关键避坑点,为工程实践提供了宝贵指南。

ios99的博客 403

js中call()方法的用法

1.call方法 语法:call(thisobj,[argq,arg2]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象 说明: call方法可以用来代替一个对象调用一个方法,call方法可以将一个函数的对象上下文从初始化改为新的对象,也就是括号里面的原本的对象改为call()前面的对象、即用thisobj代替call前面的东西,最终用thisobj这个对象去执行call前面的方...

qq_35810838的博客 3万+

基于STM32的六足机器人控制系统设计(项目资料ID:27)

六足机器人控制系统综合分析其结构、步态与控制算法,融合云端服务、Wi-Fi、蓝牙、语音识别及手势识别等多种技术,设计了多元化控制模式,并针对不同应用场景提出了差异化的构建方案。系统硬件采用分层设计,分为主控板与舵机控制板:主控板以 STM32F103VET6 为核心,负责各类控制模式的数据处理与状态显示;舵机控制板采用 STM32F103R8T6,专注于舵机角度的精确控制,两板通过串口实现数据交互。

以培养嵌入式工程师为己任 1万+

JS中【call】相关知识点解析

call()是 JavaScript 中用于显式指定函数执行上下文的重要方法之一。它允许你在函数执行时明确指定this指向,并可以传递参数给函数。这使得.call()在许多情况下非常有用,特别是在需要动态地改变函数执行上下文或实现继承时。

2301_79858914的博客 1422

提示词编程在自动化内容审核中的应用

文章标题 提示词编程在自动化内容审核中的应用 关键词:提示词编程,自动化内容审核,人工智能,算法原理,系统架构设计,项目实战 摘要 本文旨在探讨提示词

AI天才研究院 1252

[Unity开发] [PICO]避坑指南:PICO商店上传APP时PXR Platform APPID设定详解

PICO开发者上传Unity应用时常见的"APPID不符"问题,主要源于混淆了开发者后台两个不同位置的APPID。

每日出拳老爷子的博客 555

JS中的call( )方法和apply( )方法以及bind()

它们的第一个参数都是this要指向的对象,不同的是,call方法传递函数调用形参是以散列形式,apply方法的形参是一个数组。在传参情况下,call的性能要高于apply,因为apply在执行时还多一步解析数组。运用call()和apply()这两个方法,是为了改变this的指向。上面的this指向的是window,如何让他指向对象obj呢?3. JS的继承,构造函数的继承就是靠call来实现的。1. 使用call实现判断复杂数据类型。2. es5把伪数组转为真正的数组。二. call和apply的区别。

m0_66706006的博客 478

全新YOLOv11有效涨点改进专栏目录 | 本专栏持续更新500+篇内容 | 包含各种卷积、主干网络、各种注意力机制、检测头、损失函数、小目标检测改进、二次创新模块、独家创新等几百种创新点改进

YOLOv11专栏持续更新500+种创新改进方案,涵盖卷积优化、注意力机制、主干网络、Neck特征融合、检测头、小目标检测等核心模块。提供独家创新点组合方案、模型轻量化改进及最新Mamba架构融合技术,配套完整实验代码和训练参数解析。订阅用户可加入专属答疑群,获取一键运行项目支持。专栏包含YOLOv11网络结构详解、配置文件解读等入门必读内容,助力科研论文发表与模型性能提升。限时开放订阅通道,提供多种涨点改进方案组合,满足不同研究需求。

Ai缝合怪、助力小伙伴高效发论文 3998

javascript call()函数

js中的call()函数,简单的说就是用来纠正指正的吧! 调用一个对象的方法,用另一个对象替换当前对象,这样说显得相当的空洞与抽象,实例说明一切! 1 <script type="text/javascript"> 2 function person(name){//带参数的构造函数 3 this.name=name; //定义并初始化属性 4 t...

weixin_30912051的博客 201

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JavaScript中call()函数详细用法

call() 方法调用一个函数, 其具有一个指定的this值和分别地提供的参数(参数的列表)。 注意:该方法的作用和 apply() 方法类似,只有一个区别,就是call()方法接受的是若干个参数的列表,而apply()方法接受的是一个包含多个参数的数组。 语法 fun.call(thisArg, arg1, arg2, ...) 参数 thisArg:在fun函数运行时指定的this值。需要注...

weixin_42575028的博客 464

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

前端必知必会-JavaScript 函数 call()

本文介绍了JavaScript 函数 call()的使用,如有问题欢迎私信和评论。

qq_24018193的博客 438

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

js/javascript函数中的apply()和call()

在ES中,函数也是是对象的一种,每个函数都包含两个属性:length和prototype,且每个函数包含两个非继承而来的方法apply()和call()。这两个方法都...

QUX轻博客 149

js函数call()作用

call()语法: func.call( thisArg , arg1 , arg2 , …) thisArg是this指向的对象 arg1,arg2是这个函数(func)需要的参数 1、调用函数作用 function fn(){ console.log('你好!'); console.log(this); } fn.call(); 结果图: this指向win...

胡图图不糊涂的博客 595

js函数对象的call()方法、apply()方法、arguments属性

一、call()方法 call()方法是函数原型对象属性的方法,调用者为函数对象 可以将一个对象指定为第一个参数,此时这个对象将会成为函数执行时的this,从第二个参数起依次传入实参 例:call(obj, a, b);第一个参数表示函数中的this,a,b表示实参 二、apply()方法 apply()方法是函数原型对象属性的方法,调用者为函数对象 可以将一个对象指定为第一个参数,此...

Luck_ZZ的博客 2029

JS函数的调用 ——call() apply() bind()

JS函数的调用 ——call() apply() bind() JS中关于函数的调用除了传统的使用函数名(实参列表)的方法,还提供三种调用方式。 this总是指向被调用方法的对象,区别于普通的调用方式,以下三种函数调用可以改变this的指向。 函数名.call(执行环境对象,实参列表) .call()可以调用当前函数,并可以指定其执行环境对象,即更改this的指向 <script> function foo(name, age) { c

qq_42880033的博客 248

JavaScript中call()和apply()函数方法

call()和apply() - 这两个方式都是函数对象的方法,需要通过函数对象来调用 - 当对函数调用call()和apply()都会调用函数执行 - 在调用call()和aplly()可以将一个对象指定为第一个参数 此时这个对象将会成为函数执行时的this - call()方法可以将实参在对象之后依次传递 - apply()方法需要将实参封装到一个数组中统一传递 - this的情况: 1、以函数形式调用时,this永远倒是window 2、

想要成为码农的博客 322

Js函数Function类型以及apply()和call()

文章内容是读“JavaScript高级程序设计”的笔记。 函数其实也是一个对象,每个函数都是Function类型的一个实例,与其他引用类型一样具有属性和方法。由于函数是对象,因此函数名称实际上是一个指向函数的指针。 一、定义函数的几种方式:例如我们以返回两个数值的和为例。 函数声明:这种方式定义的函数的作用域是全局的。 function sum (num1, num2) { ...

xyh的博客 1870

JavaScript 高级函数操作:bind() call() apply() 以及其他

在 JavaScript 开发中,函数不仅是执行代码块的基本单元,它们还具有对象特性,可以拥有自己的方法和属性。其中,bind(), call(), 和 apply() 是我们经常使用的几个函数方法,它们提供了强大的功能来控制函数执行时的上下文(this)以及参数传递方式。除此之外,还有其他一些相关的函数方法值得我们了解。

weixin_44520557的博客 776

JavaScript中函数对象方法 call()、apply()、bind()

函数对象方法,call(),apply(),bind()

前端卷王小白的博客 1342

Javascript函数上的call()方法

Javascript函数上的call()方法

听海边涛声 683

JavaScript之call() 、apply() 、bind()函数

在看一段代码的时候,遇到了bind()函数,当时看到的时候有点懵了,不是特别理解这个函数的使用以及作用,于是查找了一些资料之后,终于明白了一些,在查资料的过程中,看到将这个函数与call()和apply()函数对比的文章还不少,于是我想补充并整理一下这三个方法的使用。       我们可以看到call ()和 apply()的定义说明:call()和apply() 是函数的非继承方法,在某个特定

Wendy 724
上一篇: JS之hasOwnProperty()学习记录
下一篇: JS 之 基本类型和引用类型
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值