我试图更好地理解JavaScript以及它的内幕。 我已经阅读了基于面向对象范式的不同指南,这些指南基于JavaScript使用的原型,但我真的无法理解这种范式与Java中使用的常规类型有何不同。
在我看来,以同样的方式行事,但只有一种奇怪而棘手的语法。我错了吗?他们之间有什么区别?
请您给我一个具体的例子,其中JS范例可以成功使用,而且常规的OOP范例不适合?
答案 0 :(得分:1)
不同之处在于,在Java,C ++,python,php和其他支持OOP的语言中,您通常有两种不同的语言元素 - 一种是 <beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
version="1.2" bean-discovery-mode="annotated">
</beans>
,它充当元数据,然后我们基于类定义; Class
这种方式是该语言的第二个元素。
在JavaScript中没有object
元素,只有Class
。我们可以创建一个对象,然后将其用作原型来创建其他对象,例如:
object
有一些方法可以用类来模拟OOP,因为它可以在其他语言中使用,这就是你在var animal = {
"name": "Bim",
"age": 5
};
// now we can use the animal object iself, for example pass it to some function
// that shows object name
function showName(obj) {
alert(obj.name);
}
showName(animal);
// but we also can use it as a prototype to create new objects
var dog = Object.create(animal);
dog.bark = function() {
alert(this.name + ": bark! bark!");
}
dog.name = 'Pluto';
dog.bark();
中可能提到的。
实际上没有必要上课,这取决于你的习惯和应用程序设计。只使用合成到继承,就可以使用对象。