<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<script language="javascript">
var hello = 'Hello ';
var welcome = ', welcome!';
function say(msg){
alert(msg);
}
/**
*默认this指针指向window对象
*/
window['name'] = 'window';
function say_1(arg1,arg2) {
say(arg1 + this.name + arg2);//此时的this为window对象
};
/*
以下调用输出: Hello window, welcome!
*/
say_1(hello, welcome);
/**
*call方法
1、作用:call方法用来改变this指针所指向的对象,只有Function对象才有call方法,Function调用call后,Function中的this都指代传入的obj对象
2、用法:Function.call(obj, arg1, arg2, ... ,argn);
3、arg1, arg2, ... ,argn为传给Function的参数。
*/
function say_2(arg1,arg2) {
say(arg1 + this.name + arg2);//此时的this为obj_1对象
};
var obj_2 = {};
obj_2.name = "obj_2";
/*
以下调用输出: Hello obj_2, welcome!
*/
say_2.call(obj_2, hello, welcome);
/**
*apply方法
1、作用和call方法相同,只是用法有差异;
2、用法:Function.apply(obj, argsArray),argsArray为Array对象,其元素将作为参数依次传给Function。
*/
function say_3(arg1,arg2) {
say(arg1 + this.name + arg2);//此时的this为obj_1对象
};
var obj_3 = {};
obj_3.name = "obj_3";
/*
以下调用输出: Hello obj_3 welcome!
*/
say_3.apply(obj_3, new Array(hello, welcome));
/**
*arguments对象
1、作用:arguments只存在于Function体内,是一个Arguments对象,像数组,有length属性(注意:并不是真的数组,不是Array对象)。它把所有传给Function的参数按照数组的格式存储。
*/
function say_4() {
say(arguments[0] + this.name + arguments[1]);//此时的this为obj_4对象
};
var obj_4 = {};
obj_4.name = "obj_4";
/*
以下调用输出: Hello obj_4 welcome!
*/
say_4.apply(obj_4, new Array(hello, welcome));
/**
*arguments的callee属性
1、作用:callee用来引用当前正在执行的函数(arguments必须在函数体内),这能让未命名的函数进行自调用;
2、用法:arguments.callee(arg1, ... , argn)
*/
var say_5 = function() {
if(arguments.length < 1){
return '';
}else{
/*
*注意:
*1、arguments.callee指向匿名函数本身;
*2、this指针指向window对象,在这里并无太多意义,只是充个参数而已
*/
return arguments[0] + arguments.callee.apply(this, Array.prototype.slice.call(arguments,1));
}
};
/*
以下调用输出: Hello obj_5 welcome!
*/
say( say_5( hello, 'obj_5', welcome) );
/**
*Function的caller属性
1、作用:caller指向调用该函数的函数;
2、用法:Function.caller(arg1, ... , argn)
*/
function say_6(arg1){
if(say_6.caller){
say_6.caller(arg1);
} else {
say('say_6 saying: ' + hello + arg1 + welcome);
}
}
function say_7(){
if(arguments.length > 0){
say('say_7 saying: ' + hello + arguments[0] + welcome);
}else{
say_6('obj_6');
}
}
/*
以下调用输出: say_6 saying: Hello obj_6 welcome!
*/
say_6('obj_6');
/*
以下调用输出: say_7 saying: Hello obj_6 welcome!
*/
say_7();
/*
以下调用输出: say_7 saying: Hello obj_7 welcome!
*/
say_7('obj_7');
</script>
</body>
</html>
分享到:
相关推荐
某台机器上,访问公司的好几个产品网站,都抛出很多 Invalid procedure call or argument ,跟进了下,情况最后简化为
主要介绍了javascript利用apply和arguments复用方法,有需要的朋友可以参考一下
call和apply方法 call方法可改变上下文this指针,类似的方法还有apply,主要用在js对象各方法互相调用的时候,使当前this实例指针保持一致,或在特殊情况下需要改变this指针。 obj1.method1.call(obj2,argument1,...
主要介绍了Javascript基础教程之argument 详解的相关资料,需要的朋友可以参考下
1. 每个函数都包含两个非继承而来的方法:call()方法和apply()方法。(天生的) 2. 相同点:这两个方法的...区别:call和apply的区别在于call的第二个参数可以是任意类型,而apply的第二个参数必须是数组或者argument
Null passed to a callee that requires a non-null argument 此警告就是某属性说好的不能为空,你又在某地方写了XX = nil 所以冲突了 这个警告比较新,是xcode6.3开始 为了让OC也能有swift的?和!的功能,你在声明...
ARGUMENT GRE ARGUMENT GRE ARGUMENT GRE ARGUMENT GRE ARGUMENT GRE ARGUMENT GRE ARGUMENT GRE ARGUMENT GRE ARGUMENT GRE
第一,和老 G 不同,新 G 的重点已经不是批判谬误,因此在文字不宜出现 flawed/dubious 第二,我们在写作时必须正面回应题目要求 第一种适合那些只
写在前面的话:这份逻辑纠错的作业是考满分的公共作业,对于大家熟悉题库、熟悉逻辑错误的关键词和套路有很大帮助。但是这里面的一些题的答案我认为不是严格意义上的单选题
argparse 是 Python 内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并自动生成帮助和使用信息。当然,Python 也有第三方的库可用于...
Variable-length Argument Lists
keil升级5.25pre(临近几个...会提示Error: Encountered an improper argument 主要解决办法就是替换UV4.exe,可以将低版本中的UV4.exe直接替换 具体操作看:https://blog.csdn.net/u011624093/article/details/80880708
argument用法
TypeError: loop of ufunc does not support argument 0 of type Tensor which has no callable arctan method 报错行 self.u = np.round(np.dot(self.F, self.u)) #或者 self.u = np.round(self.u + np.dot(K, ...
GRE作文argument全部官方范文分析
OnOff 是个极小的 JavaScript 库,提供 on(), off() 和 trigger() 事件管理函数。同时还包括一个非常方便的 once() 函数,事件只能调用一次。 示例: > // Create an instance of OnOff() > EventManager =...
GPU显卡的Compute Capability需>=5.3,否则会提示error: (-217:Gpu API call) invalid device function in function 'make_policy' 编译本接口所用的工具及环境: Cmake-3.17.5 VS2019 opencv-4.2.0 opencv-contrib...