WEB开发网
开发学院网页设计JavaScript JS.Class - 2. Methods & Types 阅读

JS.Class - 2. Methods & Types

 2009-10-13 00:00:00 来源:WEB开发网   
核心提示: klass 其实就是 class (class 是 JavaScript 保留字),它指向类型对象,JS.Class - 2. Methods & Types(3),有点类似 C# GetType(),我们还可以用 superclass 找到其基类,只有在测试没通过的时候,你才看到 JS

klass 其实就是 class (class 是 JavaScript 保留字),它指向类型对象,有点类似 C# GetType()。我们还可以用 superclass 找到其基类。

利用 klass 我们可以做更多的事情,比如说调用静态成员。很显然,某些时候(比如类库或重构)比直接用 User.test() 这种硬编码要好些。

var User = new JS.Class(
{
  extend : 
  {
    test : function() { alert("Test!"); }
  }
});
var o = new User();
o.klass.test();

继续玩点有深度的,找出所有的子类,并创建实例。

var User = new JS.Class(
{
  name : "User",
  print : function() { document.write(this.name + "<br />"); }
});
var Manager = new JS.Class(User, { name : "Manager" });
var System = new JS.Class(User, { name : "System" });
var o = new User();
for(var i in o.klass.subclasses)
{
  var k = o.klass.subclasses[i];
  new k().print();
}

JS.Class 甚至允许我们创建 Interfaces,这很奇怪不是吗?不过它并不是我们通常所理解的那种接口,它只是一个约束,用来检查某个对象是否包含接口所指定的成员。

var IUser = new JS.Interface(["print", "test"]);
var User = new JS.Class(
{
  name : "User",
  print : function() { },
  test : function() {}
});
var o = new User();
JS.Interface.ensure(o, IUser);

有点遗憾的是它只能测试实例方法,而不管静态方法和字段成员。当然,只有在测试没通过的时候,你才看到 JS.Interface.ensure 的效果。

Microsoft JScript 运行时错误: object does not implement name()

可以测试对象是否实现了多个接口。

JS.Interface.ensure(o, IUser, IOther...);

编缉推荐阅读以下文章

  • JS.Class - 3. Modules & Mixins
  • JS.Class - 1. Classes & Inheritance

上一页  1 2 3 

Tags:JS Class Methods

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接