當前位置:編程學習大全網 - 編程語言 - js語言的特點 老師作業

js語言的特點 老師作業

JS語言特征(來自Pro Javascript Techniques)

1、引用

引用指向的只能是具體的對象,而不是另壹個引用。在執行字符串鏈接操作時,結果總會是壹個新的字符串對象,而非原字符串的修改版本。

2、函數重載和類型檢查

函數重載必須依賴兩件事情:判斷傳入參數數量的能力和判斷傳入參數類型的能力。

1.判斷傳入參數數量

JavaScript的每個函數都帶有壹個僅在這個函數範圍內作用的變量(contextual variable)稱為參數(argument),它是壹個包含所有傳給函數的參數的偽數組(pseudo-array),所以它並非真正意義的數組(也就是說妳不能修改它,也不能用push()來添加新元素),但可以訪問其中的元素,也具有.length屬性。

2.判斷傳入參數類型

JavaScript的類型檢查有兩種特別有用的方法:

第壹種方法是使用typeof操作符。這個工具提供了壹個字符串名稱,用於表達變量內容的類型。當變量不是object或array類型時,這是最完美的解決方法了。但是對於自定義的對象就不能用這個方法進行類型檢查,因為它只返回object,很難跟其他的object區分開來。

第二種檢查對象類型的方法,需要引用所有JavaScript對象都帶有的壹個屬性,稱為構造函數(construstor)。這個屬性引用的是原本用來構造該對象的那個函數。

3、作用域

在Javascript裏,作用域是由函數劃分的,而不是由塊(block)劃分的。基於瀏覽器的Javascript的壹個有趣特征是,所有屬於全局作用域的變量其實都是window對象的屬性。如果變量沒有顯式定義,它就是全局定義的,雖然它可能只在這個函數作用域的範圍內使用。

閉包

閉包(closure)意味著內層的函數可以引用存在於包圍它的函數內的變量,即使外層函數的執行已經終止。

閉包能實現的額外作用:

1、在壹些函數式程序設計語言裏,有壹種稱為Curry化的技術。本質上,Curry化是壹種通過把多個參數填充到函數體中,實現將函數轉換為壹個新的經過簡化的(使之接受參數更少)函數的技術。

function addGenerator(num)

{

//返回壹個函數

return function(toAdd)

{

return num+toAdd;

};

}

var addFive=addGenerator(5);

aler(addFive(4)==9);

2、通過自執行的匿名函數妳可以把所有原本屬於全局的變量都隱藏起來。

(

function()

{

//這個變量如果沒有用自執行的匿名函數包圍起來那麽它就是全局的

var msg="Thanks for visiting!";

window.onunload=funtion()

{

alert(msg);

};

}

)();

3、使用匿名函數來激發出創建多個使用閉包的函數所需的作用域

var obj=document.getElementById("main");

var items=["click","keypress"];

for(var i=0;i<items.length;i++)

{

(

function()

{

var item=item[i];

obj["on"+item]=funciton()

{

alert("Thanks for your "+item);

};

}

)();

}

4、上下文對象

在Javascript中,代碼總是有壹個上下文對象(代碼處在該對象內)。上下文對象是通過this變量體現的,這個變量永遠指向當前代碼所處的對象中。全局對象其實是window對象的屬性。這意味著即使是在全局上下文中,this變量也能指向壹個對象。Javascript提供了call和apply兩個方法,可以使用這兩個方法改變上下文對象。

  • 上一篇:男朋友是壹名程序員,這是壹種怎麽樣的體驗呢?
  • 下一篇:柔性送料控制器有幾種方式?
  • copyright 2024編程學習大全網