天天看點

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,如需轉載請自行聯系原作者

繼續閱讀