1.当构造函数不需要传递参数时,可以省略那一对小括号。
例如:obj=new Object;
2访问属性的两种方法:
(1).作为对象的属性的话就可以通过.号进行访问。
例如:var a=new String('kehaojian');
alert(a.substring(2,3));
结果是h
(2).使用方括号进行访问.
var a=new Object;
a.y=33;
alert(a['y']);
结果是33
变量的四种不同结果:
var p="kehaojian";
function ke(){
var p="ke";
alert(this.p);
}
ke();
结果kehaojian
var p="kehaojian";
function ke(){
p="ke";
alert(this.p);
}
ke();
结果:ke
var p="kehaojian";
function ke(){
var p="ke";
alert(p);
}
ke();
结果为ke
p="kehaojian";
function ke(){
p="ke";
alert(this.p);
}
ke();
结果为ke
3.this关键字表示对某个对象的引用,可以把它理解为一个引用类型的变量,但它的值是由系统确定的,也就是说this无法被赋值的。
(1).在函数体内没有显式的说明它是一个对象,而非window对象的属性时,那么此时的this就是这个对象。
如:var ke=new Object;
ke.hao=function(){
alert(this===ke);
}
结果为true;
function(){
alert(this===windows);
}
function ke(){
alert(this===window);
}
window.ke();
结果为true
(2).当用new关键字来调用函数时,此时的this就是这个构造函数创建的对象。
var ke=new Object;
ke.hao=function(){
alert(this===ke);
}
4.函数Function对象的方法:(相当于Function类)
apply:有两个参数,一个是用来改变this的引用,另一个是用来传递参数列表(一般为数组)。适用于动态的改变this的引用。
call:和apply相似,只是传递的参数有点不同,call第二个参数不是数组。
var obj=new Object;
var func1=new Function("a","b","alert(\"func1\"+(this===window)+(a-b))");
var func2=function(a,b){
alert("func1"+(this===obj)+(a-b));
}
func1(4,5);
func1.apply(obj,[4,5]);
func2(4,5);
func2.apply(obj,[4,5]);
函数的执行环境:
从里到外,里值代替外值,外值仍不变。
caller属性:用来显示函数的调用者。
1.在全局执行环境下,它的值为null
2.在另一个函数中被调用的话,它的值就是那个函数(整个格式都不变)。
var ke=new Function("alert("ke:"+ke.caller)");
function haojian(){
ke();//在这个函数中调用a函数;
alert('haojian:'+haojian.caller);
}
haojian();
结果是ke:function haojian(){
ke();//在这个函数中调用a函数;
alert('haojian'+haojian.caller);
}
haojian:null
5.函数中的arguments对象:只用在函数体内,用来管理函数的实际参数。
有两个属性:
(1).callee:用来显示正在执行的函数,也就是函数的本身。
function ke(){
alert(arguments.callee);
}
window.ke();
结果是
function ke(){
alert(arguments.callee);
(2).length:用来显示函数被调用时实际传递的参数个数。
例如:function ke(){
alert(arguments[0]+arguments[1]);
}
window.ke(1,2);
结果是3
6.Constructor: 构造函数:在对象创建或者实例化时候被调用的方法。通常使用该方法来初始化数据成员和所需资源。
每个对象都有一个指向创建自己的构造函数的属性;用this来创建构造函数。
如:function ke(x,y){
this.x=x;
this.y=y;
}
var obj=new ke(4,5);
alert(obj.x+obj.y);
本文转自gauyanm 51CTO博客,原文链接:http://blog.51cto.com/gauyanm/561421,如需转载请自行联系原作者