JavaScript是一種動態的,弱類型,基於原型的腳本語言。在JavaScript中"一切皆對象"。
(1)動態性
動態性是指,在一個Javascript對象中,要爲一個屬性賦值,我沒不必事先創建一個字段,只需要在使用的時候做賦值操作即可,
//定義一個對象
var obj=new Object();
//動態創建屬性name
obj.name="an object";
//動態創建屬性sayH1
obj.sayHi=function(){
return "hi";
}
obi.sayHi();
(2)弱類型
Javascript是弱類型的,它的數據類型無需在聲明時指定,解釋器會根據上下文對變量進行實例化,
//定義一個變量s,並賦值爲字符串
var s="text";
//賦值s爲整型
s=12+5;
//賦值s爲浮點型
s=6.3
//賦值s爲一個對象
s=new Object();
s.name="object";
弱類型的好處是,一個變量可以很大程度的進行復用,比如String類型的name字段,在被使用後,可以賦值爲另一個Number型的對象,而無需重新創建一個新的變量。不過,弱類型也有其不利的一面,比如在開發面向對象的Javascript的時候,沒有類型的判斷將會是比較麻煩的問題,不過我們可以通過別的途徑來解決此問題
Javascript應用範圍
(1)客戶端Javascript
客戶端的JavaScript可以使你的WEB頁面更加生動,通過AJAX,無刷新的更新頁面內容,可以大大的提高用戶體驗,隨着大量的JavaScript包如jQuery,ExtJS,Mootools等的涌現,越來越多的絢麗,高體驗的WEB應用被開發出來,這些都離不開幕後的JavaScript的支持。
(2)服務端Javascript
當Google的JavaScript引擎V8出現以後,有很多基於V8引擎的應用出現了,其中最著名,最有前景的當算Node.js了
var sys=require('sys');
http=require('http');
http.createServer(function(req,res){
setTimeout(function(){
res.sendHeader(200,{'Content-Type':'text/plain'});
res.sendBody('Hello World');
res.finish();
},2000)
}).listen(8000);
sys.put('Server runing at http://127.0.0.1:8000/');
保存這個腳本爲sayHello.js,然後運行:
node sayHello.js
程序將會在控制檯上打印:
Server runing at http://127.0.0.1:8000/
訪問http://127.0.0.1:8000/,兩秒鐘之後頁面會響應:Hello,World.
再看另一個例子
var tcp= require('tcp');
var server=tcp.createServer(function (socket){
socket.setEncoding("utf8");
socket.addListener("connect",function(){
socket.send("hello\r\n");
});
socket.addListener("receive";function(data){
socket.send(data);
});
socket.addListener("eof",function(){
socket.send("goodbye\r\n");
socket.close();
});
});
server.listen(7000,"localhost");
當訪問localhost的7000端口,將建立一個TCP連接,編碼方式爲utf-8,當客戶端連接到來時,程序在控制檯上打印
hello
當接收到新的數據時,會將接收到的數據原樣返回給客戶端,如果客戶端斷開連接,則向控制檯打印:
goodbye
Node提供了豐富的API來簡化服務器端的網絡編程,由於Node是基於一個JavaScript引擎的,因此天生的就具有動態性和可擴展性,因此在開發網絡程序上,是一個不錯的選擇。