Javascript调用函数
Javascript call function
我最近一直在测试一些代码,试图更好地理解javascript。然后我遇到了call()
函数,我不能很好地理解。
我有以下代码:
function hi(){
console.log("hi");
}
var bye = function(param, param2){
console.log(param);
console.log(param2);
console.log("bye");
}
调用bye.call(hi(), 1, 2)
,得到hi 1 2 undefined
调用bye.cal(1,2)
,得到2 undefined bye undefined
,我理解call()
函数的第一个参数必须是一个函数,然后是我的bye
函数接受的参数数量。但是最后一个未定义是从哪里来的呢?
第一个参数不一定是函数。第一个形参是在函数调用上下文中"this"变量被设置为的对象。
var bye = function(param, param2){
console.log(param);
console.log(param2);
console.log("bye");
console.log(this.x)
}
t = {'x': 1};
bye.call(t, 1, 2);
控制台应该显示:1,2,"bye"和1.
未定义的是你的函数的返回值。
第一次打电话:
bye.call(hi(), 1, 2)
你正在调用hi()(所以它打印'hi'),返回值没有被使用,并且1和2是bye的参数。
第二次通话:
bye.cal(1,2)
1被赋值给this。2为参数,param2未定义
您正在获得未定义,因为您的函数不返回任何内容,它只将输出打印到屏幕上。所以,你的代码可以像这样:
var obj = {foo: "hi"};
var bye = function(param, param2){
console.log(this.foo);
console.log(param);
console.log(param2);
}
bye.call(obj, 1, 2) // "hi", 1, 2
你可以在MDN上阅读更多关于.call()
的信息
fn.call()
允许您设置调用函数时this
将具有的值。this
的值必须是fn.call()
的第一个参数
调用方法需要所有的参数单独应用方法需要所有的参数在一个数组中,用例子解释
let solarSystem = {
sun: 'red',
moon : 'white',
sunmoon : function(){
let dayNight = this.sun + ' is the sun color and present in day and '+this.moon + ' is the moon color and prenet in night';
return dayNight;
}
}
let work = function(work,sleep){
console.log(this.sunmoon());
// accessing the solatSystem it show error undefine sunmmon untill now because we can't access directly for that we use .bind(),.call(),.apply()
console.log('i work in '+ work +' and sleep in '+sleep);
}
let outPut = work.call(solarSystem,'day','night');
let outPut1 = work.call(solarSystem,['day1','night1']);
let outPut2 = work.apply(solarSystem,['day2','night2']);
相关文章:
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- 如何在Javascript函数调用中循环变量
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 如何远程检查JavaScript应用程序的函数调用堆栈
- javascript函数调用不起作用
- 为什么这个函数调用会破坏程序并导致未定义的变量
- 如何通过函数调用设置图像的src
- 从全局函数调用Ember控制器上的方法
- 为什么Jquery$.ajax在函数调用中触发所有statusCode,即使调用成功
- JavaScript函数调用(arg1)(arg2)
- 打印链接时,将javascript函数调用到链接中
- 在函数调用中封装数据除了隐藏数据之外还有什么优点
- 无法从JavaScript中的函数调用对象属性
- 对中的函数调用进行排序是回调的唯一方法
- 函数调用方法有什么用
- Javascript:JSHint:应为赋值或函数调用,但实际看到的却是表达式
- HTML5(Bootstrap)通过函数调用运行动画
- 函数调用不起作用
- 函数中的Javascript函数调用