javascript知识点总结----函数内部属性

时间:2023-05-20 08:59:26

在函数内部,有两个特殊的对象:argumengs和this

1、函数的参数

ECMAScript函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,也就是说:你定义的函数只接收2个参数,在调用这个函数时也未必一定要传递2个参数,可以传递一个、三个甚至不传递参数,之所以会这样,是因为ECMAScript中的参数在内部是用一个数组来表示的。函数接收到的永远是这个数组,而不关心数组中包含哪些参数。在函数体内的话可以通过argumengs对象来访问这个参数数组,从而获取传递给函数的每一个参数。

1、arguments

arguments对象只是与数组类似,它并不是arry的实例,因为可以使用方括号语法来访问他的每一个元素。使用length属性来确定传进来多少个参数,arguments的值永远与对应命名参数保持同步,且没有传递值得命名参数会自动赋予undefined值

var sum = function(sum1,sum2){
alert(arguments.length)
}
sum("string") //
sum() //
sum("1","2","3") //3

 calle

虽然artguments的主要用途是保存函数参数,但这个对象还有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数  注:当函数在严格模式下运行时,访问arguments.callee会导致错误

var sum = function(sum1,sum2){
console.log(arguments.callee)
}
sum("string") //function(sum1,sum2){
//console.log(arguments.callee)
//}

2、this

this指向执行这个函数的对象

window.color = "red";
var o = {color:"blue"};
function saycolor(){
alert(this.color);
}
saycolor(); //red o.saycolor = saycolor;
o.saycolor(); //blue