{ alert(this.name); };
var myDog = new Dog('Killer');
myDog.displayName(); //Killer
myDog.bark(); //Woof!
Dog.prototype.getBreed = function()
{
alert("Mutt");
};
myDog.getBreed(); //Mutt
myOtherDog = new Dog('Bowzer');
// this hides getBreed() from other Dogs
myOtherDog.getBreed = function()
{
return "Lhasa Apso";
};
alert(myOtherDog.getBreed()); //Lhaso Apso and Mutt!
强类型
像大多数的脚本语言一样,JavaScript也是弱类型的。解释器会在运行时,基于值来决定某变量的数据类型。这种松散性使得开发者可以很灵活的 重用和比较变量。在后种情况,使用强制类型转换就可以比较两种不同数据类型的值;JavaScript会自动在比较之前将他们转化成相同的类型。alert( "42" == 42 ); //true
alert( ("42" == 42) + 1 ); //2. the boolean true evaluates to 1.
alert( "I live at " + 99 + " Renolds street."); // the 99 int is converted to a string.
var a:int = 100; //variable a has a type of int
var b:String = "A string."; //variable b has a type of String
function (a:int, b:string)//the function accepts two parameters, one of type int, one of type string
function(...):int //the function returns a value with a type of int
为了进行上述的比较,你需要转换类型:alert( int("42") == 42 ); //true
alert( int("42" == 42) + 1 ); //2
alert( "I live at " + string(99) + " Renolds street.");
程序单元体
借鉴了各种流行js框架,程序单元体是很有用的代码模块,它可以在运行时导入。当框架和自定义库数量越来越多的时候,这些已经成为web程序不可或缺的组成部分。设想下,包含了成千上万行代码的库们,一次性下载他们已经不合时宜了。这是伪代码:use unit Effects "http://mysite/lib/Effects";
use unit Utils "http://mysite/lib/Utils";
var panel = new Panel();
panel.setTime(Util.getFormattedTime());
编译时的类型检查
在JavaScript2.0 里,你可以使用严格模式来编译JavaScript模块。在运行之前,它可以检查几个重要的方面的完整性,包括:
静态类型检查
引用名称确认
对常数的非法赋值
保证比较的两个值有合法的类型
常数
先前的JavaScript开发者不得不使用命名规范或者精心制定的工作规则保护他们的常量。而这些在JavaScript2.0都是不需要的://JavaScript 1.x constant
var CULTURE_CONST = "Do you really want to change me?"; // constant in appearance only.
//JavaScript 2.0 constant
const HAMMER_TIME = "You can't touch this!" // a true constant.
命名空间
随着js框架的不断涌现,使用命名空间已经变得越来越必要了。这个标准目前被用作创建全局对象来保护你自己的功能不给先前的全局对象和函数击倒在地(直译)。
总结
许多向对2.0提案进行了猛烈的抨击,批评它在想经典的语言如c++、java在靠近。
本文来源:华军资讯 作者:佚名