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引擎的,因此天生的就具有动态性和可扩展性,因此在开发网络程序上,是一个不错的选择。