我试图更好地理解JavaScript及其内幕。
我已经阅读了关于基于JavaScript使用的原型的面向对象范例的不同指南,但是我真的不明白这种范例与常规的范例之间有何不同。

在我看来,它的行为方式相同,但语法却很奇怪。我错了吗?它们之间有什么区别?

您能否给我一个具体的示例,在该示例中可以成功使用JS范式,而在常规OOP范式中却不太适合?

最佳答案

区别在于,在Java,C ++,python,php和其他支持OOP的语言中,您通常具有两种不同的语言元素-一种是Class作为元数据,然后我们根据类定义创建新的对象。 object这样是语言的第二个要素。

在JavaScript中,没有Class元素,只有object。我们可以创建一个对象,然后将其用作创建其他对象的原型,例如:



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();





有许多方法可以用类来模拟OOP,因为它可以在其他语言中工作,而这正是您可能在act in the same way, but only with a weird and tricky syntax中所指的。

实际上,不一定要拥有类,它取决于您的习惯和应用程序设计。可以只使用对象,特别是如果您更喜欢组合而不是继承。

07-28 06:59