使用JScript.NET创建asp.net页面
2008-02-22 09:28:25来源:互联网 阅读 ()
大家一定习惯于使用vb.net和C#来创建asp.net页面,但是不知大家知不知道我们还可以使用Jscript.net编写asp.net.
这可能是自微软1996年推出基于IE3.0的Jscript1.0以来在功能上最大的飞跃。JScript 传统上被用作开发客户端脚本。在internet上它普遍存在,特别是在Active sever page(ASP)中 。
当脚本变得很大的时候,程序员需要编写更有效的代码;并且程序变得越来越复杂,程序员往往受到Jscript的局限性。
如果你对Jscript很熟悉的话,你将很快的在.net平台上使用Jscript.net,应为Jscript.net就像是Jscript的升级版,而不是一门新的语言。
Jscript.net最新的特性是Jscript.net是真正的编译语言。这使它完全可以与vb.net和C#相媲美。从语法方面,Jscript.net改善了变量类型的定义,不但支持明确的变量类型定义,还支持模糊的变量类型定义。模糊定义是一项激动人心的技术,它可以分析你脚本中使用的变量,并且推断出变量的类型。这就意味着你可以使用未定义的变量并以更快的速度执行。
请参照下面的例子:
function test()
{
for (var x = 0; x < 100; x )
{
print(x);
}
}
当Jscript.net编译这个程序的时候,它分析变量X的用途并确定变量X只用做数值型,结果变量被安全的定义为数值型。技术进步在于把变量定义为数值型要明显优于把变量定义为generic Object 或 variant。
为了实现Jscript.net的推断变量类型的功能,你需要遵守以下几条规则!
一. 永远声明你的局部变量。这看起来像是显而易见的,但是这是非常重要的,Jscript.net只能推断你的局部变量,而不是全局变量。如果你没有声明它,直接使用,它就将成为全局变量,将不能被优化。
二. 仅使用一种数据类型,如果你声明一个数值型变量,却用来储存字符型的数据,Jscript将把该变量定义为generic Object 或 variant。
//无法推断类型 -- glob 是一个全局变量
var glob = 42;
function myfunc()
{
//无法推断类型-- s 没有定义因此它被当作全局变量
s = "hello";
// 可以推断类型
var i = 0;
//无法推断类型—q被指派成其他的类型
var q = new Date();
q = 3.14159;
}
尽管类型推断是非常好的功能,但是它还是有一定的缺点的。它无法帮助我们捕获类型不匹配或其他的错误。为了解决这个问题,Jscript.net提供一种方法明确定义变量的类型。通过例子,你将很容易的了解它的使用方法。
// 定义数值类型
var myInt : int = 42;
// 定义一个函数,返回一个字符串
function GetName() : String
{
// 程序行
}
// 定义一个带两个参数的函数返回一个逻辑类型
function CheckNumber(dVal : double) : Boolean
{
// function code
}
下面给出一个完成的函数,仔细的体会一下。
function getConditions(strCity : String) : String
{
var now : Date = new Date();
switch (strCity.toUpperCase())
{
case "LONDON":
if (now.getMonth() <= 7 || now.getMonth() >= 9)
{
return "overcast";
}
else
{
return "partly overcast and humid";
}
break;
case "SEATTLE":
if (now.getMonth() == 7 && now.getDay() == 4)
{
return "torrential rain";
}
else
{
return "rain";
}
break;
case "LA":
return "smoggy";
break;
case "PHOENIX":
return "damn hot";
break;
default:
return "partly cloudy with a chance of showers";
}
}
使用Jscript.net,你也可以定义其他.net架构的类型,通过引用命名空间和派生类可以向Jscript.net引入新的数据类型。这样在两者的数据类型中就有可能产生重叠。参见下表:
Boolean .NET Framework Boolean / JScript boolean
Number .NET Framework Double / JScript number
String .NET Framework String / JScript string
Int .NET Framework Int32
Long .NET Framework Int64
Float .NET Framework Single
Double .NET Framework Double
Object .NET Framework Object / JScript Object
Date JScript Date object
Array JScript Array
Function JScript Function object
在Jscript中定义类通过类声明, 包含方法和对象和var 声明。对于类的派生通过下面两个程序的对比,你讲清楚地明白。
JScript 5.5 Code
// Simple object with no methods
function Car(make, color, year)
{
this.make = make;
this.color = color;
this.year = year;
}
function Car.prototype.GetDescription()
{
return this.year " " this.color " " this.make;
}
// Create and use a new Car object
var myCar = new Car("Accord", "Maroon", 1984);
print(myCar.GetDescription());
JScript.NET Code
// Wrap the function inside a class statement.
class Car
{
var make : String;
var color : String;
var year : int;
function Car(make, color, year)
{
this.make = make;
this.color = color;
this.year = year;
}
function GetDescription()
{
return this.year " " this.color " " this.make;
}
}
var myCar = new Car("Accord", "Maroon", 1984);
print(myCar.GetDescription());
Jscript.net还支持定义private和protected property通过GET和SET进行读写。
如下例:
class Person
{
private var m_sName : String;
private var m_iAge : int;
function Person(name : String, age : int)
{
this.m_sName = name;
this.m_iAge = age;
}
// Name 只读
function get Name() : String
{
return this.m_sName;
}
// Age 读写但是只能用SET
function get Age() : int
{
return this.m_sAge;
}
function set Age(newAge : int)
{
if ((newAge >= 0) && (newAge <= 110))
this.m_iAge = newAge;
else
throw newAge " is not a realistic age!";
}
}
var fred : Person = new Person("Fred", 25);
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:ASP.NET图象处理详解(2)
下一篇:ASP.NET中水晶报表的使用
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash