我正在努力更好地理解JavaScript以及它背后的含义。我读过关于基于JavaScript使用的原型的面向对象范式的不同指南,但我真的不能理解这种范式与常规的范式有什么不同。
在我看来,它似乎也是以同样的方式行事,只是使用了一种奇怪而棘手的语法。我说错了吗?它们之间的区别是什么?
您能给我一个具体的例子,在这些例子中,JS范例可以成功地使用,而常规的OOP范例并不是很适合?
发布于 2016-05-08 22:18:03
不同的是,在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中所指的。
实际上,不一定要有类,这取决于您的习惯和应用程序设计。可以只使用对象,特别是当您更喜欢组合而不是继承时。
https://stackoverflow.com/questions/36984139
复制相似问题