【JS/辨析】javascript 中的 apply 和 call 方法

原生JS面试题整理(2023年)_概念题01 不会报错,const修饰的是数组,而不是数组的元素。补充:const修饰引用类型时,都修饰的是地址。而不是数据。//const修饰的变量是只读,不能修改的,即是常量//const修饰的是直接指向(修饰)的内存//1、const修饰的变量是只读,不能修改的,即是常量//定义了一个变量temp1,赋值为100,const表示以后不能再修改了//这句话会报错,不能给只读变量赋值(Assignment to constant variable.) 阅读详情

1、方法定义

call方法: 
语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 
定义:调用一个对象的一个方法,以另一个对象替换当前对象。 
说明: 
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。 

apply方法: 

语法:apply([thisObj[,argArray]]) 
定义:应用某一对象的一个方法,用另一个对象替换当前对象。 
说明: 
如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。 
如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。

 

2、常用实例

a、

Java代码  收藏代码
  1. function add(a,b)  
  2. {  
  3.     alert(a+b);  
  4. }  
  5. function sub(a,b)  
  6. {  
  7.     alert(a-b);  
  8. }  
  9.   
  10. add.call(sub,3,1);   

 这个例子中的意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4); // 注意:js 中的函数其实是对象,函数名是对 Function 对象的引用。

 

b、

Java代码  收藏代码
  1. function Animal(){    
  2.     this.name = "Animal";    
  3.     this.showName = function(){    
  4.         alert(this.name);    
  5.     }    
  6. }    
  7.   
  8. function Cat(){    
  9.     this.name = "Cat";    
  10. }    
  11.    
  12. var animal = new Animal();    
  13. var cat = new Cat();    
  14.     
  15. //通过call或apply方法,将原本属于Animal对象的showName()方法交给对象cat来使用了。    
  16. //输入结果为"Cat"    
  17. animal.showName.call(cat,",");    
  18. //animal.showName.apply(cat,[]);  

 call 的意思是把 animal 的方法放到cat上执行,原来cat是没有showName() 方法,现在是把animal 的showName()方法放到 cat上来执行,所以this.name 应该是 Cat

 

c、实现继承

Java代码  收藏代码
  1. function Animal(name){      
  2.     this.name = name;      
  3.     this.showName = function(){      
  4.         alert(this.name);      
  5.     }      
  6. }      
  7.     
  8. function Cat(name){    
  9.     Animal.call(this, name);    
  10. }      
  11.     
  12. var cat = new Cat("Black Cat");     
  13. cat.showName();  

 Animal.call(this) 的意思就是使用 Animal对象代替this对象,那么 Cat中不就有Animal的所有属性和方法了吗,Cat对象就能够直接调用Animal的方法以及属性了.

 

d、多重继承

Java代码  收藏代码
  1. function Class10()  
  2. {  
  3.     this.showSub = function(a,b)  
  4.     {  
  5.         alert(a-b);  
  6.     }  
  7. }  
  8.   
  9. function Class11()  
  10. {  
  11.     this.showAdd = function(a,b)  
  12.     {  
  13.         alert(a+b);  
  14.     }  
  15. }  
  16.   
  17. function Class2()  
  18. {  
  19.     Class10.call(this);  
  20.     Class11.call(this);  
  21. }  

 很简单,使用两个 call 就实现多重继承了
当然,js的继承还有其他方法,例如使用原型链,这个不属于本文的范畴,只是在此说明call 的用法。说了call ,当然还有 apply,这两个方法基本上是一个意思,区别在于 call 的第二个参数可以是任意类型,而apply的第二个参数必须是数组,也可以是arguments
还有 callee,caller..


原文链接:http://uule.iteye.com/blog/1158829

5、数据库基础概念与数据建模全解析 本文深入解析了数据库的基础概念,包括函数依赖、决定因素和多值依赖等关键依赖关系,同时探讨了数据建模的重要方法论,如IDEF1X、信息工程和陈方法。此外,还介绍了SQL Server管理工作室的图表功能,帮助用户进行数据库的可视化设计。通过本文,读者将掌握数据库设计的核心知识,为构建高效、可扩展的数据库系统奠定基础。 阅读详情

相关推荐

ZYNQ实战:如何用AXI-stream FIFO解决跨时钟域数据同步难题(附完整代码)

本文深入探讨了在ZYNQ项目中,如何利用AXI-Stream FIFO有效解决PS与PL之间的跨时钟域数据同步难题。文章详细分析了异步FIFO的架构设计、关键配置参数,并提供了PS端软件策略与PL端逻辑设计的完整代码示例,旨在帮助开发者构建稳定可靠的数据流通道,优化系统性能。

nginx7reverse的博客 756

JS原型+继承+this操控|3大难点拆解,前端实战再也不慌

本文深入解析JavaScript原型、继承和this操控三大核心难点。原型是JS面向对象的基础,通过构造函数、原型对象和实例的关系实现方法复用。继承分为属性继承(call方法)和方法继承(推荐Object.create标准写法)。call/apply/bind用于改变this指向,区别在于执行时机和参数传递方式。文章结合代码实例详细讲解了原型链、constructor修复、instanceof原理等关键概念,并指出常见易错点,帮助开发者夯实面向对象编程基础,解决实际开发中的this指向问题。

zhangke2024的博客 401

Chkdsk误删文件?5步教你从FOUND.000文件夹找回重要数据(附工具推荐)

本文详细介绍了当Chkdsk误删文件后,如何从FOUND.000文件夹中找回重要数据的5个步骤。包括理解Chkdsk与FOUND.000的关系、定位与访问FOUND.000文件夹、手动恢复CHK文件的技巧、使用UnCHK工具自动化恢复以及预防数据丢失的关键措施。适用于Windows用户解决数据丢失问题,特别是NTFS文件系统下的文件恢复。

weixin_30687051的博客 392

2024年前端最新前端面经 关于Cookie和session的区别、Cookie与session的详解,腾讯T2亲自讲解

而Cookie有两种存储方式:一是浏览器把Cookie存到内存中,二是保存在硬盘中。无状态协议即客户端是不保存什么数据的,是无记忆的。通过此会话编号,即可找到所记录的用户信息,操作记录(访问过什么)。Cookie在生成的时候会指定一个Expire值,即Cookie的生命周期。指出JS的宿主对象和原生对象的区别,为什么扩展JS内置对象不是好的做法?指出JS的宿主对象和原生对象的区别,为什么扩展JS内置对象不是好的做法?与cookie不同的是,cookie保存在浏览器或本地,而session保存在服务器端。

2401_84616230的博客 586

三相直流无刷电机(带HALL传感器)BLDC控制一

本案例选择TIM0的CH0/CH1/CH2三个通道接入三路原始hall输出信号。三路TIM_CHx(48)通过配置存入到NIP寄存器(new input pattern,3 bits)内。未完待续。

m0_69929716的博客 407

CMCC-IPC-A410串口刷机救砖教程

《CMCC-IPC-A410摄像头串口刷机指南》摘要 本指南针对2018年前老款CMCC-IPC-A410摄像头变砖/升级失败的情况,提供串口刷机方案。需准备CH340G串口模块、杜邦线、海康V5.5.82固件等工具。操作包含硬件连接(TX/RX交叉接线)、115200波特率终端配置、CTRL+U进入刷机模式,通过UPF格式化、tftp传输固件、update写入等步骤完成修复。刷机后设备恢复未激活状态,需重置密码,原定制功能可能失效。整个过程需稳定供电,耗时约15-20分钟,注意此操作将使原厂保修失效。(1

海康威视技术支持 1852

JavaScript之call,bind,apply方法及 this 的用法辨析

文章转自个人博客 https://knightyun.github.io/2019/05/01/js-call,转载请申明。 概述 JavaScript函数中的三个方法.call(), .apply(), .bind(),总体来说主要功能就是改变函数中 this 关键字的指向,因为 this 默认指向 当前环境的对象; 例如: var obj = { name: 'Knight', ...

knight-yun的博客 596

[密码学实战]密评考试训练系统v1.0程序及密评参考题库(获取路径在文末)(二十四)

本系统将密码学理论与软件工程实践相结合,为密评备考提供了高效解决方案。随着《密码法》的深入实施,掌握密评知识将成为信息安全从业者的核心竞争力。立即开始您的密码安全专家之旅!(注:实际应用请以最新发布版本为准)

曼岛_的博客 799

深入辨析JavaScript的this指向

outerFunc是在运行时才能确定this指向,那么innerFunc如何在定义时就能确定this的值呢?// this 继承自 outerFunc 的 this// 输出: Window {...}(非严格模式)或 undefined(严格模式)事实是:innerFunc的this静态绑定了 outerFunc的this 的引用!在onterFunc定义时,innerFunc的this并不是一个独立的值,而是直接指向 onterFunc的this。

weixin_58843362的博客 2020

YOLO模型部署RK3588多核NPU并行加速完整教程:基于线程池的高性能AI推理实现

本教程详细介绍了如何在RK3588平台上实现多核NPU并行加速的AI推理方案。RK3588搭载3个独立NPU核心,总算力达6TOPS,支持单核、双核和三核三种工作模式。文章深入解析了NPU硬件架构特点,包括核心独立处理能力、内存带宽分配及多核心协作机制,并提供了C++代码示例展示核心负载均衡、任务调度和内存优化策略。通过线程池技术可以有效利用多核NPU并行计算能力,显著提升AI推理性能,特别适合高并发场景。教程还包含内存子系统的瓶颈分析和性能预估方法,为开发者提供完整的优化思路。

LXY_LOVE36的博客 797

​网格划分理论:CFD理论67 网格划分-三大理论问题_哔哩哔哩_bilibili传统解释非结构化网格是不对的——计算传热学大叔专题讨论2--CFD网格类型_哔哩哔哩_bilibili

传统解释非结构化网格是不对的——计算传热学大叔。fluent计算理论和离散方法原理视频推荐。

qq_15963745的博客 183

关于js闭包、关于call()、apply()、bind()等方法的一点理解

一、js闭包 首先,需要搞清楚什么是闭包: 闭包是嵌套的内部函数 有点抽象,上例子: function outExample(){ var a=1 function innerExample(){ return a*a //这里的a调用的不是全局变量,而是outExample中的函数局部变量 } } 1.2、产生闭包的条件 1、函数

m0_57446284的博客 339

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

javascript辨析--call和apply

javascript辨析--call和apply 转载于:https://www.cnblogs.com/motadou/p/4127369.html

weixin_30500105的博客 85

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

通俗易懂之人人都会手写call/apply/bind函数

首先从以下几点来考虑如何实现这几个函数: 不传入第一个参数,那么上下文默认为 window; 改变了 this 指向,让新的对象可以执行该函数,并能接受参数。 那么我们先来实现 call Function.prototype.myCall = function(context) { if (typeof this !== 'function') { throw new TypeEr...

qq_39075021的博客 713

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

2019-05-01-js-call

title layout categories tags excerpt JavaScript之call,bind,apply方法及 this 的用法辨析 post JavaScript bind call apply this JavaScript中方法call, apply, bind的区别 概述 J...

洪君的博客 263

JavaScript方法、Date和JSON

在javascrip中一切皆对象,任何js支持的类型都可以用JSON来表示。方法就是放在对象的里面,对象只有两个东西:属性和方法。this是无法指向的,默认指向调用他的那个对象;as.age()//方法,一定要带()所有的键值对都是用key:value。在js中可以控制this的 指向。JSON字符串和js对象的转化。JSON和js对象的区别。as.name//属性。3.Date基本使用。

2401_88055323的博客 33

前端面试之JavaScript(一)

也到了自己快找工作的时候了,所以最近在复习前端的知识,这里是自己对JavaScript的一些知识点的总结,以后会持续更新,分享自己的复习知识,有些是在不懂的时候参考大佬的讲解。有些理解不到位的地方还请指正。祝自己找工作顺利!!! 1、bind、call、apply 这三个函数都会改变this的指向,call和apply更适用于在函数运行时改变this;而bind会返回一个新的函数,新函数的th...

weixin_33872566的博客 206

JavaScript展开与剩余语法:从概念到实战的完整指南

在JavaScript编程中,处理可变参数、数组合并与对象复制是常见的开发需求。展开语法(Spread syntax)和剩余语法(Rest syntax)作为ES6引入的核心特性,通过统一的`...`操作符,为这些操作提供了简洁且表达力强的解决方案。展开语法用于在函数调用、数组字面量和对象字面量中将可迭代对象或对象的属性展开,而剩余语法则用于在函数参数定义和解构赋值中收集多个元素。这两种语法不仅提升了代码的可读性和简洁性,还增强了函数式编程的能力,广泛应用于状态管理、配置合并和属性透传等场景。掌握`...`

weixin_33971977的博客 375

RPGMAKER游戏引擎基于JavaScript的插件制作(六)——重写方法(三):在场景(scenes)中创建精灵(Sprite)——复制式重写的实例教学

本文通过在地图场景创建精灵对象的实例,让读者学习复制式重写的基本使用方法,能够通过位图文件和位图对象创建精灵 同时会帮助大家辨析几个比较容易混淆的概念:场景scenes,窗口windows,精灵sprites

进入盛夏之门 的博客 2863

JS函数面试题(10)

一.什么是函数?函数声明的作用是什么?函数定义包括哪几部分内容?如何调用函数? 1.1:函数就是包裹在花括号中的代码块,前面使用function关键字 1.2:当需要执行某个事件时需要这方法可以直接调用,并且可重复使用,减少代码的重复性。 1.3:定义函数必须有function关键字(关键字必须小写),函数名,参数(根据情况而定),还有函数体 函数又分为匿名函数和自定义函数。 自定义函数...

weixin_45824120的博客 758

JavaScript事件监听:从基础绑定到事件委托与性能优化

事件监听是JavaScript实现网页交互的核心机制,它基于观察者模式,允许代码对用户操作或浏览器状态变化做出响应。其技术价值在于解耦用户行为与程序逻辑,提升应用的可维护性与响应能力。在Web开发中,事件监听广泛应用于表单验证、动态UI更新、用户行为追踪等场景。本文深入探讨了事件监听的三种绑定方式,重点解析了事件委托如何利用冒泡机制高效处理动态元素,并涵盖了内存管理、节流防抖等性能优化实践,其中事件封装函数和JS逆向等热词相关的实战技巧,为构建健壮的前端应用提供了系统指导。

weixin_34112181的博客 445

2024年最新JQuery工具方法整理,web前端开发怎样自学

obj && “length” in obj && obj.length,//obj存在并且有length属性,则直接回去obj的length。function isPlainObject(obj){//判断是否是纯粹的对象({},new Object,Object.create(null))if ( isFunction( obj ) || isWindow( obj ) ) {//因为函数和对象中也有length属性,所以要排除他们。//(即“文件类型”。

2401_84617731的博客 818

JavaScript函数完全指南:从基础语法到闭包原理与应用实战

本文深入探讨JavaScript函数的核心概念与应用,涵盖以下要点: 函数基础:介绍函数的封装性、模块化、复用性等特性,通过BMI计算器示例展示实际应用。 定义方式:对比函数声明(存在提升)、函数表达式(适合回调)和ES6箭头函数(无this绑定)的语法与使用场景。 参数处理:详解默认参数、剩余参数(...args)和解构赋值,以及return返回值机制。 内置函数:分类整理全局函数(parseInt)、Math方法(random)、数组方法(map/filter)和字符串方法(split/replace)

2303_79635409的博客 396

DAY_08JavaScript 面向对象深度全解:Object、构造函数与 this 系统指南(上)

本文系统梳理JavaScript对象建模与this指向的核心知识体系,涵盖对象操作、构造函数、this绑定三大模块。从基础的对象创建/读写/遍历,到构造函数实例化原理,再到this的三大调用场景(全局/构造/方法)与常见陷阱(宿主丢失)。通过商品排序等实战案例演示对象数组处理,结合面试题解析常见误区。进阶部分介绍包装对象、call/apply/bind显式绑定、箭头函数特性,并对比ES6 class与传统构造函数的差异。最后提供现代Object静态方法全览和技术选型决策树,帮助开发者建立完整的对象模型知识链

黄裳博客 377

TypeScript 快速入门:从 JavaScript 到类型安全的第一步

核心痛点:JavaScript 的灵活是双刃剑。当项目从 1000 行增长到 10000 行、团队从 1 人扩展到 10 人,动态类型变成最大负债:函数参数类型成谜、对象属性重构全凭运气、第三方库升级后全线崩溃。TypeScript 是社区对"大规模 JavaScript 可持续工程化"交出的事实标准答案。适配人群:具备 JavaScript ES6+ 基础,首次接触 TypeScript 的前端工程师、全栈开发者、Node.js 后端开发者。

我的博客 369

JavaScript构造函数底层契约与原型链原理

构造函数是JavaScript对象创建的核心机制,其本质并非语法糖,而是由ECMAScript规范明确定义的四步执行契约:创建空对象、绑定原型、执行构造逻辑、返回实例。该机制依托this绑定规则与原型链实现内存高效复用和动态扩展能力,支撑instanceof判断、继承及依赖注入等关键特性。理解构造函数,就是掌握JavaScript面向对象的底层运行时协议,也是深入class语法、TypeScript类型系统和现代前端架构(如DI容器、工厂模式)的前提基础。本文结合new操作符行为、prototype设计哲学

weixin_34129696的博客 371
上一篇: 【JS/网易公开课】哈佛大学公开课:构建动态网站 第6讲 JavaScript
下一篇: 【JS/文档】字符串操作方法集合
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值