1.函数内部两个对象:arguements和this;
其次,还有另一个函数对象的属性对象的属性:caller
(1)arguements
表示类数组对象,包含传入函数中的所有参数。
用途:保存函数参数。
属性:callee,表示的是一个指针类型,即指向当前拥有arguements对象的函数。
以一个阶乘函数的案例如下:
function factorial(num){
if(num<=1){
return 1;
}
else{
returnnum*factorial(num-1);
//return num*arguements.callee(num-1);
}
}
如上所示,带标记的函数,即指的是当前函数,一个指针类型,可以用arguements.callee表示。
(2)this
引用的是函数执行的环境对象,
即在调用函数时,this对象引用的就是window。
以一段代码案例为例:
window..color="red";
var o={color:"blue"};
function saycolor(){
alert(this.color);
}
saycolor(); //表示在全局变量中;
//执行后即为window下的对象,red。
o.saycolor=saycolor;
o.saycolor();
注:由于saycolor在全局变量中定义,因此引用了this对象,其在代码段执行的过程中引用了不同的对象。
首先,调用saycolor()函数时,
this引用的是一个window对象,this.color=window.color,返回“red”;
其次,这个函数赋值给o时,此时this.color=o.color,即返回了“blue”;
(3)caller
该属性主要是保存调用当前对象函数的函数的引用,
若在全局作用域中调用,即返回null;
以一段代码案例为例:
function outer(){
inner();
}
function inner(){
alert(inner.caller);
}
outer();
在上述函数中,会显示出outer()函数的源代码,
首先outer()中调用了inner(),所以inner.caller就会指向outer(),
由于inner表示arguements.callee,所以上述inner可由其代替,即可实现松散的耦合。
2.函数属性和方法
属性:length、prototype;
方法:call()、apply()、bind()
(1)call()方法时,传递给函数的参数必须一一列举出来。
以一个案例来说明,
function sum(num1,num2){
return num1+num2;
}
function callsum(){
return sum.call(this,num1,num2);
}
(2)apply()方法
其可接受两个参数,一个是作用域,一个是参数数组,即也可以是Array实例,或arguements对象。
function sum(num1,num2){
return num1+num2;
}
function callsum2(num1,num2){
return sum.apply(this,[num1,num2]);
}
(3)bind()方法
创建一个函数实例,其对应this值会被绑定当前bind()函数中,
window.color="red";
var o={color:"blue"};
function saycolor(){
alert(this.color);
}
var objectsaycolor=saycolor.bind(o);
objectsaycolor();
由于在该函数中出现bind()函数,即存在绑定,其中的函数参数o传进来,即显示“blue”;
3.函数继承的方法3种,都是返回函数的代码:
a、oLocaleString()和toString();
b、valudeOf()
4.操作符typeof、instanceof
(1)typeof
对基本类型返回“boolean”
对引用类型返回“true”
(2)instanceof
对测试基本类型boolean对象时,返回“true”
对测试引用对象布尔值时,返回“false”
5.boolean、number、string
重写的方法包括:toString()、toLocaleString()、valueOf()
在toString(n)方法中,可传入返回n进制数值的字符串形式,
即如以下代码所示
var num=10;
alert(num.toString()); //"10";
alert(num,toString(2)); //"1010"
a.string()方法中,有3种创建新字符串方法:substr(1,n)、slice()、substring()
substr(1,n):第二个参数n表示返回的字符的个数;
slice()、substring():表示子字符串最后一个字符后边的位置。
b.位置方法:indexOf()、lastindexOf()
前者表示前往后,后者表示后往前,返回的是一个数值,参数为指定的一个字符类型。
c.删除空格方法:trim()
d.转换大小写
大写: toLocaleUpperCase()
toUpperCade()
小写:即将Upper改为Lower
e.模式匹配match()方法