首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用工作代码助手和大纲的JavaScript继承?

使用工作代码助手和大纲的JavaScript继承?
EN

Stack Overflow用户
提问于 2010-12-25 17:28:35
回答 1查看 175关注 0票数 1

我知道很多不同的JavaScript继承方法。我认为最重要的因素之一是代码助手和大纲是否仍然使用继承模型。

例如,在ExtJS中,继承涉及到:

代码语言:javascript
复制
MyApp.SuperWindow = Ext.extend(Ext.Window, {
    constructor: function() {
        this.doSomething();
        MyApp.SuperWindow.superclass.constructor.apply(this, arguments);
    },

    doSomething: function() {
    }
});

我们的SuperWindow扩展了Ext的Window组件,增加了执行某些操作的功能。虽然这种继承可以工作,但您会丢失代码助手和我所知道的所有IDE (Eclipse、Netbeans、Aptana、NuSphere等)中的大纲。

但是,您可以执行以下操作:

代码语言:javascript
复制
MyApp.SuperWindow = {
    constructor: function() {
        this.doSomething();
        MyApp.SuperWindow.superclass.constructor.apply(this, arguments);
    },

    doSomething: function() {
    }
});

MyApp.SuperWindow = Ext.extend(Ext.Window, MyApp.SuperWindow);

但这看起来太可怕了。您需要输入MyApp.SuperWindow三次(不包括可以用this编写的父构造函数调用)。

在维护代码助手和大纲的同时,如何在JavaScript中进行继承?

我想保留继承模型的父/超级的概念。由于典型的继承只涉及将对象的副本放入一个人的原型中,因此您不会得到supers这样的东西。

EN

回答 1

Stack Overflow用户

发布于 2010-12-25 17:36:34

我非常喜欢John Resig的Simple Javascript Inheritance,它的语法非常简洁,例如:

代码语言:javascript
复制
var Person = Class.extend({
  init: function(forename, surname)
  {
    this.Forename = forename;
    this.Surname = surname;
  }
});

var Employee = Person.extend({
  init: function(forename, surname, role)
  {
    this._super(forename, surname);
    this.Role = role;
  }
});

var employee = new Employee("Matthew", "Abbott", "Developer");
console.log(employee.Forename + " " + employee.Surname + " is a " + employee.Role);

console.log(employee instanceof Class);
console.log(employee instanceof Person);
console.log(employee instanceof Employee);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4529883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档