WEB开发网
开发学院网页设计JavaScript JS.Class - 1. Classes & Inheritance 阅读

JS.Class - 1. Classes & Inheritance

 2009-10-13 00:00:00 来源:WEB开发网   
核心提示: 嗯~~~ 这应该说是创建一个类对象,而非类定义,JS.Class - 1. Classes & Inheritance(2),JSON 方式看上去简洁美观,JS.Class 接收一个定义对象来完成 Class 定义,并可以改写,静态方法使用类变量调用而非实例变量,initialize 可

嗯~~~ 这应该说是创建一个类对象,而非类定义。JSON 方式看上去简洁美观,JS.Class 接收一个定义对象来完成 Class 定义。initialize 可以理解为实例初始化方法 (.ctor),它包含了构造一个对象所需的参数/属性。调用代码完全类似 C#/Java 风格,熟悉的 new 关键字以及成员调用。

创建一个继承子类同样很简单。

var Manager = new JS.Class(User, 
{
  initialize : function(name, address)
  {
    this.callSuper();
    this.address = address;
  },
  
  address : "UnKnown",
  
  test : function() 
  { 
    alert(this.name); 
  },
  show : function(content) 
  { 
    content += " (Manager)";
    this.callSuper(content); 
  }
});
var user = new Manager("Tom");
user.age = 30;
user.sex = "Female";
var info = user.getInfo();
user.show(info);

JS.Class 通过接收基类对象和新增成员对象两个参数来创建子类。除了新增成员外,我们还可以 override 基类的方法。这里面出现了一个 callSuper() 方法,作用类似 C# 里面的 base,它可以自动处理方法参数并调用基类方法。不过需要注意的是,如果我们修改了参数,那么必须显式添加调用参数。

看看不显示添加调用参数的结果。

show : function(content) 
{ 
  content += " (Manager)";
  this.callSuper(); 
}

输出:

<User>
Name: Tom; Age: 30; Sex: Female

子类的初始化方法不是必须的,但如果需要,同样可以重写。

JS.Class 还允许我们创建静态方法 (static method),这是其他 JavaScript OO 模型所没有的。

var User = new JS.Class(
{
  initialize: function(name) 
  {
    this.name = name;
  },
  extend:
  {
    getInfo: function(user)
    {
      return user.name;
    },
    show: function(s)
    {
      alert(s);
    }
  }
});
  
var Manager = new JS.Class(User, 
{
  initialize : function(name, age)
  {
    this.callSuper(name);
    this.age = age;
  },
  extend:
  {
    getInfo : function(user)
    {
      return this.callSuper() + ";" + user.age;
    }
  }
});
  
var manager = new Manager("Tom", 31);
var info = Manager.getInfo(manager);
Manager.show(info);

使用 extend 包含所有的静态成员,子类会自动继承基类的静态方法,并可以改写。静态方法使用类变量调用而非实例变量,这也是我们所熟悉的。

编缉推荐阅读以下文章

  • JS.Class - 3. Modules & Mixins
  • JS.Class - 2. Methods & Types

上一页  1 2 

Tags:JS Class Classes

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