window-js中apply()里面this的问题

问题描述

js中apply()里面this的问题
function sum(num1num2) {
return num1+num2;
}
function callsum(num1num2) {
return sum.apply(thisarguments)
}
alert(callsum(12)); //3

callsum内部的sum.apply(thisarguments)中this指代的是什么?我知道单单在全局执行sum.apply(thisarguments)this代表window但到了函数里面this是什么呢?

解决方案

this指的是,调用函数的那个对象

解决方案二:
在函数内部分情况

 function sum(num1num2) {    return num1+num2;}function callsum(num1num2) {   return sum.apply(thisarguments) // 但实际上从这个函数的功能来说,其实不用关心this是什么。}function a(){    this.obj={         callsum:callsum   //类似这种方式的,是obj这个对象    }    this.c=function c(num1num2){          callsum(num1num2);//对于这种方式的,是window    }}

解决方案三:
apply主要用于更改被调用方法中this对象的指向。对于你的sum方法没有意义,应为么有使用this对象

JavaScript apply与call的用法意义及区别

时间: 2024-11-17 12:13:24

window-js中apply()里面this的问题的相关文章

js中apply方法的使用详细解析_javascript技巧

1.对象的继承,一般的做法是复制:Object.extendprototype.js的实现方式是: 复制代码 代码如下: Object.extend = function(destination, source) {     for (property in source) {         destination[property] = source[property];     }     return destination; } 除此之外,还有种方法,就是:Function.apply

js中apply、call、bind方法说明

apply和call函数 call() 和 apply()都是为了改变某个函数 运行时的上下文 (context)而存在的,换句话说,就是为了改变函数体内部 this 的指向 call()方法接受的是一个 参数列表 ,而apply()方法接受的是一个包含多个参数的 数组 (或类数组对象) fun.apply(thisArg[, argsArray]) 参数:         thisArg             在 fun 函数运行时指定的 this 值.需要注意的是,指定的 this 值并不

Angular.js中$apply()和$digest()的深入理解_AngularJS

$apply()和$digest()介绍 AngularJS提供了一个非常酷的特性叫做双向数据绑定(Two-way Data Binding),这个特性大大简化了我们的代码编写方式.数据绑定意味着当View中有任何数据发生了变化,那么这个变化也会自动地反馈到scope的数据上,也即意味着scope模型会自动地更新.类似地,当scope模型发生变化时,view中的数据也会更新到最新的值.那么AngularJS是如何做到这一点的呢?当你写下表达式如 时,AngularJS在幕后会为你在scope模型

一个js的apply问题,this为什么不是指向sum1而是window

问题描述 一个js的apply问题,this为什么不是指向sum1而是window var m=1; function sum () { alert(this.m); } sum(); //1 function sum1() { sum.apply(this); } sum1(); //1 sum.apply(this)明明在sum1对象里面调用的,this应该指向sum1啊,为什么指向的是window? 解决方案 sum1是一个函数不是一个对象,它没有this的.this是"本对象"

JS中的call()和apply()方法总结

在js中每个函数都包含两个非继承而来的方法:call()和apply() call和apply的作用都是在特定的作用域中将函数绑定到另外一个对象上去运行,即可以用来重新定义函数的执行环境,两者仅在定义参数方式上有所区别 它们接收参数方面不同:call和apply的第一个参数都是需要调用的函数对象,在函数体内这个参数就是this的值,剩余的参数是需要传递给函数的值,call与apply的不同就是call传的值可以是任意的,而apply传的剩余值必须为数组 call方法 语法: Function.c

JS中改变this指向的方法(call和apply、bind)_javascript技巧

this是javascript的一个关键字,随着函数使用场合不同,this的值会发生变化.但是总有一个原则,那就是this指的是调用函数的那个对象. this一般指向的是当前被调用者,但也可以通过其它方式来改变它的指向,下面将介绍三种方式: 1.call用作继承时: function Parent(age){ this.name=['mike','jack','smith']; this.age=age; } function Child(age){ Parent.call(this,age);

JS中call/apply、arguments、undefined/null方法详解_javascript技巧

a.call和apply方法详解 -------------------------------------------------------------------------------- call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指

详解js中的apply与call的用法_javascript技巧

前言 call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向.call 和 apply二者的作用完全一样,只是接受参数的方式不太一样. 方法定义applyFunction.apply(obj,args)方法能接收两个参数: obj:这个对象将代替Function类里this对象 args:这个是数组或类数组,apply方法把这个集合中的元素作为参数传递给被调用的函数. call call方法与apply方法的第

js中call、apply、bind的用法

今天看博客时,看到了这样的一段js代码: var bind = Function.prototype.call.bind(Function.prototype.bind); 我想突然看到这样的一段代码,即使js能力再强的人,可能也需要花点时间去理解.像我这样的菜鸟就更不用说了.其实,原文已经对这端代码做出了解释,但我还是想用我的想法去解释这段代码. 上面那段代码涉及到了call.bind,所以我想先区别一下call.apply.bind的用法.这三个方法的用法非常相似,将函数绑定到上下文中,即用