天天看点

JavaScript一些小知识点的记录2之函数2

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

  p="ke";

结果:ke

var  p="ke";

alert(p); 

结果为ke

p="kehaojian";

3.this关键字表示对某个对象的引用,可以把它理解为一个引用类型的变量,但它的值是由系统确定的,也就是说this无法被赋值的。

(1).在函数体内没有显式的说明它是一个对象,而非window对象的属性时,那么此时的this就是这个对象。

如:var ke=new Object;

ke.hao=function(){

alert(this===ke);

结果为true;

function(){

alert(this===windows);

alert(this===window);

window.ke();

结果为true

(2).当用new关键字来调用函数时,此时的this就是这个构造函数创建的对象。

var ke=new Object;

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(){

alert('haojian'+haojian.caller);

haojian:null

5.函数中的arguments对象:只用在函数体内,用来管理函数的实际参数。

有两个属性:

(1).callee:用来显示正在执行的函数,也就是函数的本身。

alert(arguments.callee); 

结果是

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,如需转载请自行联系原作者

继续阅读