首页 > 编程语言 >Js(Javascript)中的apply方法的使用

Js(Javascript)中的apply方法的使用

时间:2023-12-10 22:44:06浏览次数:42  
标签:function Javascript Js say call apply 参数 方法

 

JavaScript 中的 apply() 方法用于调用函数,允许指定函数的 this 对象和参数。也就是通过function的apply方法来调用方法,可以改变方法的this的对象,并且还可以传入方法参数,apply对于面向对象编程还是很有用的。

参考文档:Js(Javascript)中的apply方法的使用-CJavaPy

1、基本语法

在 JavaScript 中,apply 方法是函数对象的一个非常重要的方法。它允许你调用一个函数,同时可以为这个函数指定 this 值(函数运行时指向的对象)。

func.apply(thisArg, [argsArray])
  • func:要调用的函数。
  • thisArgfunc 函数运行时的 this 引用。如果该参数不是一个对象,那么它会被转换为对象。
  • [argsArray]:一个数组或类数组对象,func 函数的参数列表。

2、使用示例

1)改变函数的 this 上下文

function man()
{
  this.Name="man";
  this.SayName=function(){
     alert(this.Name);
   }
}
function woman()
{
  this.Name="woman";
  this.SayName=function(){
     alert(this.Name);
   }
}
function say(word,age)
{
 //只有say方法的this是man,或是woman对象才可以调用,say方法本身是没有SayName方法的。
  if(this.SayName)
    this.SayName();
  alert(word+age);
}
var m=new man();
var w=new woman();
//通过apply方法调用say
say.apply(m,["abc",20]);
//用call调用,call和apply就传参数方式不同,两个方法的第一个参数是相同的,剩下call直接写say方法的参数就可以了,而apply是通过数组传入say方法参数的。
say.call(m,"abc",20);
用bind调用
say.bind(m,"abc",20)();//返回的是方法,还要在执行一下。

2)传递参数列表

function sum(a, b, c) {
    return a + b + c;
}

let nums = [11, 22, 33];

let result = sum.apply(null, nums);
console.log(result);  // 输出: 6

3、与 call 方法的比较

apply 方法与 call 方法非常类似,区别在于 call 方法接受的是一个参数列表,而 apply 接受的是一个参数数组。

function multiply(a, b) {
    return a * b;
}

let resultCall = multiply.call(null, 4, 6); // 10
console.log(resultCall)
let resultApply = multiply.apply(null, [4, 6]); // 10
console.log(resultApply)

标签:function,Javascript,Js,say,call,apply,参数,方法
From: https://www.cnblogs.com/tinyblog/p/17893392.html

相关文章

  • NestJS 筑基:TypeScript 类和装饰器
    前言先回顾下前文中介绍了哪些内容:使用@nestjs/cli创建和管理Nest应用Hello,World示例代码分析Nest基本概念:模块,控制器,服务常用的装饰器:@Module、@Controller、@Get、@InjectableNest目录结构分析@nest/cli脚手架的命令本文先不继续讲解Nest中的内容,而是打算介绍TypeSc......
  • 231-js 动态创建a元素,点击a后,打开新页签,下载文件
    functiondownloadFile(){constlink=document.createElement('a');link.href='your_file_url';//替换为要下载的文件的URLlink.target='_blank';link.download='file_name';//替换为要保存的文件名document.body.appendChi......
  • 常量与变量:JavaScript中的稳定与灵活
    在编程的世界里,数据的存储与操作是构建任何功能的基础。在JavaScript这门轻量级,解释型的脚本语言中,处理数据的两个基本概念是常量(Constants)和变量(Variables)。理解它们的区别与用法,对于编写高效、可维护的代码至关重要。变量:数据的灵活容器在JavaScript中,变量可以被视为数据的容器。......
  • JSON提取器id+BeanShell断言
    JSON提取data中的值: 用提取得值${id}再继续执行: 利用BeanShell断言:importorg.json.*;Stringresponsedata=prev.getResponseDataAsString();JSONObjectdata_obj=newJSONObject(responsedata);Stringid=data_obj.get("data").get("id").toString();Strings......
  • js逆向-海南社保服务平台
    声明本文仅供学习参考,如有侵权可私信本人删除,请勿用于其他途径,违者后果自负!如果觉得文章对你有所帮助,可以给博主点击关注和收藏哦!前言目标网站:aHR0cHM6Ly9obnNieWIuaGFpbmFuLmdvdi5jbi8jL25ld3MtbW9kdWxlP3dlYnNpdGU9MQ==接口:Z2dmdy92MS91bmlmaWVk前几天看了一篇博文是关于本......
  • wordpress整合 Prism.js实现代码高亮 切图网自用
    Prism.js是一个简约漂亮的代码高亮插件,就冲简单好用就值得一用,如何把它整合到wordpress,附代码,也是切图网自己再用的。代码添加到主题的functions.php中//自定义代码高亮按钮functionappthemes_add_quicktags(){if(wp_script_is('quicktags')){?><s......
  • A sample of JSON RPC service
    ThisisasampleserviceprogramwhichshowhowtoimplementaJSONRPC.TheRPCserviceincludedtwofunctionswhichusedforRSAsignandverify.Ifyouwanttobuildthesourcecode,youneedinstallorbuildthreeopensorucelibraries:Libevent,cJSON......
  • JavaScript 学习
    变量声明和数据类型varname='John';letage=25;constPI=3.14;//数据类型:字符串、数字、布尔值//var声明(ES5),let和const声明(ES6)var、let和const是JavaScript中声明变量的关键字。var在ES5中使用,let和const在ES6中引入,具有块级作用域,能避免变量提升的问题......
  • Vue学习之node.js环境下利用Vue-cli脚手架搭建Vue项目
    目录第一个Vue-cli应用什么是vue-cli?vue-cli主要功能:搭建需要的环境1、nvm-windows下载2、安装nvm3、修改nvm环境变量4、通过nvm安装node5、安装全局npm6、一些替代npm的方式安装vue-cli第一个脚手项目配置命令行运行Vue项目IDEA运行Vue项目第一个Vue-cli应用之前练习了Vue一些......
  • Js判断数组中是否存在某个元素
    ......