博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript关于call与apply方法详解
阅读量:4290 次
发布时间:2019-05-27

本文共 1452 字,大约阅读时间需要 4 分钟。

每一个函数都包含两个非继承而来的方法:call与apply。这两个方法的用途都是在特定的作用域中调用函数,也就是动态改变函数体内this对象。换句话说,可以将函数对象继承到当前上下文(this)中来使用。

官方示例1:

function Product(name, price) {
this.name = name; this.price = price;}function Food(name, price) {
Product.call(this, name, price); this.category = 'food';}function Toy(name, price) {
Product.call(this, name, price); this.category = 'toy';}var cheese = new Food('feta', 5);var fun = new Toy('robot', 40);

官方示例2:

var person = {    firstName:"John",    lastName: "Doe",    fullName: function () {
return this.firstName + " " + this.lastName; }}person.fullName(); // Will return "John Doe"var myObject = { firstName:"Mary", lastName: "Doe",}person.fullName.call(myObject); // Will return "Mary Doe"

绑定一些函数用于传递参数

function sum(x , y){
return x+y;}function call1(num1 , num2){
return sum.call(this , num1 , num2);}function apply1(num1 , num2){
return sum.apply(this , [num1,num2]);}

扩充作用域

window.color = 'red';var obj = {color:'blue'};var obj2 = {color:'yellow'};function showColor(){
alert(this.color);}//showColor(); //red//showColor.call(window); //red//showColor.call(obj); //blue

可以做到方法与对象的解耦

call方法的简单模拟与实现

function test1(a , b){
return a+b;}// 自定义的对象(js中大写的函数名默认为自定义对象)function Obj(x, y){
this.x = x ; this.y = y ; return x*y;}var o = new Obj(10 , 20);o.method = test1 ;alert(o.method(o.x , o.y));delete o.method;test1.call(o,o.x ,o.y); //200

转载地址:http://xhrgi.baihongyu.com/

你可能感兴趣的文章
Ubuntu/centos/redhat/SUSE sipp安装(带rtp支持,3.5.1版本)
查看>>
周鸿祎:很多程序员聪明,但我一看就知道他不会成功
查看>>
编译程序遇到问题 relocation R_X86_64_32 against `.rodata' can not be used when making a shared object;
查看>>
Const指针 、 指向const的指针 、引用、指针
查看>>
GDB调试命令
查看>>
常见数据类型的字节数
查看>>
gcc/g++ 编译常见问题
查看>>
【设计模式】 工厂模式实例 C++ , 利用工厂模式写一个计算器
查看>>
opencv
查看>>
【图像处理】 一、OSTU分割
查看>>
Android常用的框架有哪些
查看>>
SSL 证书创建与部署
查看>>
学习搭建人工智能环境遇到的问题
查看>>
自己编写的计算器
查看>>
视频物体检测
查看>>
Tomcat启动遇到的问题
查看>>
Gradle-gradlew
查看>>
grpc-整合gradle与代码生成
查看>>
grpc-gradle与grpc流程完美整合(3)
查看>>
设计模式-装饰模式(Decorator)
查看>>