我正在创建一个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 '之间是否存在差异?
提前感谢您的回答。
答案 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不支持抽象类或接口,不,接口不是某种类。接口定义合同,或者 类,但不指定如何。
扩展和继承在此上下文中具有相同的含义。