call与apply区别 详细解读.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
call与apply区别详细解读 call和apply是JavaScript中的两个重要方法,它们都是Function.prototype中的方法,这意味着每个函数都可以使用这两个方法。它们的作用是改变函数体内的this对象的值,以扩充函数赖以运行的作用域。 相同点:call和apply方法的作用是一样的,都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域。一般来说,this总是指向调用某个方法的对象,但是使用call和apply方法时,就会改变this的指向。 call方法: call方法的语法是:函数名.call(this的指向,参数1,参数2)。它的作用是改变this的指向,例如:sum.call(1, 100, 200),这里的this就被设置为数字1,然后执行sum函数,输出结果为101。 apply方法: apply方法的语法是:函数名.apply(this的指向,[参数1,参数2])。它的作用也是改变this的指向,例如:sum.apply(oBtn, [100, 200]),这里的this就被设置为对象oBtn,然后执行sum函数,输出结果为200。 区别:call和apply方法的区别在于参数的传递方式。call方法的参数是逐个传递的,而apply方法的参数需要以数组的形式传递。 例子: var name = “java”; var obj1 = {“name”:“web”,“toString”:function(){console.log(this.name);}} var obj2 = {“name”:“ui”} obj1.toString.call(obj2); //输出结果为“ui” 在这个例子中,我们使用call方法将obj1的toString方法应用于obj2对象,输出结果为“ui”。如果我们使用apply方法,则需要将参数以数组的形式传递,如:obj1.toString.apply(obj2,[ ])。 继承: call和apply方法也可以用于继承。在面向对象编程中,继承是一种非常重要的机制,它允许子类继承父类的属性和方法,从而提高代码重用率。 例如: function Animal(name) { this.name = name; } Animal.prototype.eat = function() { console.log(this.name + " is eating."); } function Dog(name) { Animal.call(this, name); } Dog.prototype = Object.create(Animal.prototype); var dog = new Dog("Tom"); dog.eat(); //输出结果为“Tom is eating.” 在这个例子中,我们使用call方法将Animal的构造函数应用于Dog的构造函数,从而实现继承。 总结: call和apply方法是JavaScript中的两个重要方法,它们可以改变函数体内的this对象的值,以扩充函数赖以运行的作用域。它们的作用是一样的,但是参数的传递方式不同。call方法的参数是逐个传递的,而apply方法的参数需要以数组的形式传递。同时,call和apply方法也可以用于继承,从而提高代码重用率。
- 粉丝: 0
- 资源: 2万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助