类,接口,原型等

时间:2013-09-01 02:11:44

标签: class oop interface prototype

我正在创建一个JavaScript框架,用于在经典的面向对象编程中创建应用程序(因此使用类/接口而不是仅使用原型)。但是我给这些人提供名字仍有问题。

例如:

var Bidule = function() { /*...*/ } ;
Bidule.prototype = { /*...*/ } ;

Bidule是 OOP类,因为类是构造函数吗?或者只是构造函数? 由于类没有原型,我认为它不能称为真正的类。

所以这意味着我应该把它们称为'构造者'。但是,接口或抽象类呢?如果他们不是构造函数,那么正确的单词是什么?并且界面是一种类吗?

我在Framework中设计了构造函数,类和接口。但是我需要一个名称来重新组合所有主题,所以我们可以构建一个这样的主题:

var Bidule = new _NAME_.Class(/*...*/) ; // Where _NAME_ is the name of the container of class/function/interface.

我在考虑“概念”,但我不确定并希望了解您的意见。


我还将“ visibility ”命名为描述公共/私人课程的常用词, “ type ”用于static / abstract / interface / singleton / final类。这些是正确的吗?


最后一个问题:动词' extend '和' inherit '之间是否存在差异?

提前感谢您的回答。

1 个答案:

答案 0 :(得分:1)

Javascript不是传统的OO语言,它是原型。由于这个原因,关于OO的一些概念不能应用于js。

Bidule是您的类型,因此它是您的“类”。构造函数是您对变量的函数

var Bidule = function() { /*...*/ } ;
Bidule.prototype = { /*...*/ } ;

var obj = new Bidule();
obj.foo = 'bar';

var obj2 = new Bidule();
obj2.foo = 'foo';

alert(obj instanceof Bidule); // true
alert(obj2 instanceof Bidule); // true
alert(obj.foo); // bar
alert(obj2.foo); // foo

Javascript不支持抽象类或接口,不,接口不是某种类。接口定义合同,或者 类,但不指定如何

扩展和继承在此上下文中具有相同的含义。