理解JS

时间:2016-05-02 13:52:46

标签: javascript oop prototype

我试图更好地理解JavaScript以及它的内幕。 我已经阅读了基于面向对象范式的不同指南,这些指南基于JavaScript使用的原型,但我真的无法理解这种范式与Java中使用的常规类型有何不同。

在我看来,以同样的方式行事,但只有一种奇怪而棘手的语法。我错了吗?他们之间有什么区别?

请您给我一个具体的例子,其中JS范例可以成功使用,而且常规的OOP范例不适合?

1 个答案:

答案 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();中可能提到的。

实际上没有必要上课,这取决于你的习惯和应用程序设计。只使用合成到继承,就可以使用对象。