Javascript程序员通常不会使用关键字“类”。
我只想知道为什么。
下面的代码看起来很容易理解和易于使用的“扩展”概念
class Animal {
constructor(type){
this.type = type;
}
static isAnimal(obj, type){
if(!Animal.prototype.isPrototypeOf(obj)){
return false;
}
return type ? obj.type === type : true;
}
}
class Dog extends Animal {
constructor(name, breed){
super("dog");
this.name = name;
this.breed = breed;
}
bark(){
alert("ruff, ruff");
}
print(){
alert("The dog " + this.name + " is a " + this.breed);
}
static isDog(obj){
return Animal.isAnimal(obj, "dog");
}
}
var sparkie = new Dog("Sparkie", "Border Collie");
sparkie.bark();
简而言之,Javascript是基于原型的,而不是基于类的。尽管某些机制可能看起来与其他编程语言的机制相似,但在内部,链接对象的机制与链接类以创建继承,实例等的机制不同,就像在基于类的语言(如Python,Ruby)中一样,Java等
凯尔·辛普森(Kyle Simpson)在其在线著作和他的OSS系列图书YDKJS(尤其是标题为的书this and Object Prototypes
)中更加全面地论述了这一主题
引用JS面向对象样式的实现只是几种不同的模式,用于近似其他语言中的基于类的机制。您可能会在“狂野”中遇到几种不同的Java OO模式。这里概述了其中的七个:
正如评论者中提到的那样,ES6确实有class
关键字,但这只是对JS中现有机制的“修饰”。不会改变JS将继续基于原型而不是基于类的事实。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句