2.函数如果不给任何条件,那么this默认指向window
3.如果要指定this就通过call来传this
fn.call(1)
如果传的this不是对象,那么js会自动帮忙封装为对象
这时的this是1对象
如何声明的时候不转化为对象呢
function fn(){
'use strict'
console.log(this)
}
fn.call(1),this就是1
f.call(1,2,3,4)
此时对象1就是this,234就是arguments
4.this是隐藏参数,arguments是显示参数
5.let person={
name:'frank',
sayHi(){
console.log("你好,我叫"+person.name)}
}
我们可以用直接保存了对象地址的变量获取name
这种方法称为引用:变量保存了对象的地址
6.js在每一个函数都加上一个this,用this获取目前还不知道名字的对象
7.call指定this
fn.call(this,参数1,参数2)
函数体内标识符arguments指向实参象引用实参象类数组象 arguments[0]arguments.length
arguments?
答:1:arguments收实参副本
词析, 首先按形参形AO属性,值undefined
实参传, 再修改AO相应属性.
2:并所收实参收集起,放arguments象
t(a,b,c){},
调用: t(1,2,3,4,5) 5参数
, AO属性a,bc,3属性, arguments1,2,3,4,5, 所值
于超形参数外实参, 通arguments获
3:arguments 索引 0, 1,2,....递增,与实参逐应
4:arguments.length 属性代表实参数
5:arguments定数组, 比较像数组象,虽length属性
6:arguments每函数都,,arguemnts内部找自身arguments,
引用外层arguments
<script type="text/javascript">
// 求圆形面积,矩形面积, 三角形面积
function area () {
if(arguments.length == 1) {
alert(3.14 * arguments[0] * arguments[0])
} else if(arguments.length == 2) {
alert(arguments[0] * arguments[1])
} else if(arguments.length == 3) {
alert(arguments[0] + arguments[1] + arguments[2])
} else {
return null
}
}
area(10,20,30)
</script>
JS函数的参数在function内可以用arguments对象来获取。参数的调用有两种方式:
1、期望参数的使用。
2、实际传递参数的使用。
应用举例:
function
Test(a,
b){
var
i,
s
=
"Test函数有"
var
numargs
=
arguments.length
//
获取实际被传递参数的数值。
var
expargs
=
Test.length
//
获取期望参数的数值,函数定义时的预期参数个数(有a和b
2个参数)。
s
+=
(expargs
+
"个参数。")
s
+=
"\n\n"
for
(i
=0
i
<
numargs
i++){
//
获取参数内容。
s
+=
"
第"
+
i
+
"个参数是:"
+
arguments[i]
+
"\n"
}
return(s)
//
返回参数列表。
}
alert(Test('param1','second
param','第三个参数'))
需要注意的是:
arguments是一个object对象,它不是数组,不能对它使用shift、push、join等方法。
上述举例时用的arguments[i]中的i只是作为arguments对象的属性,并不能理解为数组下标。
代码演示
<html>
<head>
<script
language="javascript">
function
reloadList(){
if(typeof
arguments[0]
==
"function"){
arguments[0].call(this)
arguments[0]()
}
if(typeof
arguments[0]
==
"string")
alert(arguments[0])
if(typeof
arguments[0]
==
"number")
alert(arguments[0])
if(typeof
arguments[0]
==
"undefined")
alert(arguments[0])
if(typeof
arguments[0]
==
"boolean")
alert(arguments[0])
if(typeof
arguments[0]
==
"null")
alert(arguments[0])
}
reloadList(function(){})
</script>
</head>
<body>
</body>
以上这篇深入理解JS函数的参数(arguments)的使用就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)