Javascript 理解JS的原型编程范式

Javascript 理解JS的原型编程范式,javascript,oop,prototype,Javascript,Oop,Prototype,我正试图更好地理解JavaScript及其背后的含义。 我读过关于基于JavaScript使用的原型的面向对象范例的不同指南,但我真的不明白这种范例与Java中使用类的常规范例有何不同 在我看来,这似乎是以同样的方式,但只是有一个奇怪和棘手的语法。我错了吗?他们之间有什么区别 你能给我一个具体的例子吗?JS范式可以成功地使用,而规则的OOP范式不太适合? < P>区别在于,在爪哇,C++,Python,php和其他支持OOP的语言您通常有两个不同的语言元素-一个是Class,它作为元数据,然后我

我正试图更好地理解JavaScript及其背后的含义。 我读过关于基于JavaScript使用的原型的面向对象范例的不同指南,但我真的不明白这种范例与Java中使用类的常规范例有何不同

在我看来,这似乎是以同样的方式,但只是有一个奇怪和棘手的语法。我错了吗?他们之间有什么区别


你能给我一个具体的例子吗?JS范式可以成功地使用,而规则的OOP范式不太适合?

< P>区别在于,在爪哇,C++,Python,php和其他支持OOP的语言您通常有两个不同的语言元素-一个是
Class
,它作为元数据,然后我们根据类定义创建新对象<代码>对象这种方式是语言的第二个元素

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

var动物={
“名称”:“Bim”,
“年龄”:5岁
};
//现在我们可以使用动物对象本身,例如,将其传递给某个函数
//显示对象名称的
函数showName(obj){
警报(对象名称);
}
showName(动物);
//但我们也可以将其作为原型来创建新对象
var dog=Object.create(动物);
dog.bark=函数(){
警报(this.name+“:树皮!树皮!”);
}
dog.name='Pluto';

狗吠()闭包和lambda表达式在传统的面向对象编程中很难实现——但您正在寻求一种固执己见的讨论,这对本网站来说不是一种好的格式。是吗?我只是想问基于原型和基于类的范例之间有什么区别。试着读一下这个问题: