JavaScript 是基于对象的语言还是面向对象语言

时间:2021-01-28 19:51:13
有些人说是基于对象的语言,没有继承
但有些书说它是面向对象的语言,有原型式继承

18 个解决方案

#1


太深奥了!

#2


一般认为是面向对象的,但是基于对象的,可以理解为面向对象的

#3


好像不是面向对象的语言,却可以使用面向对象的思维去实现代码编写,

#4


JavaScript是基于面向对象。
JS里面的继承是模拟来实现的,那个继承,你可以理解为复制父类的方法和属性。
这个你自己可以试试,你先写一个类,然后用原型继承或者别的方式都可以,然后,在修改一个父类的方法,你在调用子类继承自父类的那个方法,这个时候,两个方法的执行结果是否一样。

#5


个人认为是基于对象的。
谁说基于对象的就没有继承?
没有继承的话,那么多的系统内建对象难道都是兄弟关系???
没有必要死扣这个概念,自己理解就好。

#6


应该是基于对象的,而java才是真正面向对象的。

#7


js不是原生支持继承,而是通过prototype去模拟的,所以是基于对象,不是面向对象

#8


基于对象。

#9


自己体会吧..

#10


javascript 没有"类"的概念.要放下对象和类,达到"对象本无根,类型亦无形"的境界确实是件不容易的事情啊。所以,javascript中没有"类",类已化为无形,与对象融为一体。正是由于放下了"类"这个概念,javascript的对象才有了其他编程语言没有的活力。
javascript的所有function类型的对象都要有一个prototype属性。这个prototype属性本身又是一个object类型对象,因此我们可以给这个prototype对象添加任意的属性和方法。既然prototype是对象的"原型",那么由该函数构造出来的对象应该都会具有这个"原型"的特征。事实上,在构造函数prototype上定义的所有属性和方法,都是可以通过构造的对象直接访问和调用的。也可以这么说,prototype提供了一群同类对象共享属性和方法的机制。

#11


基于对象的 不是面向对象的

#12


这个区别对JS的使用没影响

#13


不管是那种,js都比它先进方便,java还是C#都没有js灵活。

#14


JavaScript是基于面向对象。
JS里面的继承是模拟来实现的,那个继承,你可以理解为复制父类的方法和属性。
这个你自己可以试试,你先写一个类,然后用原型继承或者别的方式都可以,然后,在修改一个父类的方法,你在调用子类继承自父类的那个方法,这个时候,两个方法的执行结果是否一样。

heh 

#15


刚开始学JavaScript,努力吧

#16


Javascript不能實現多態吧?

#17


推荐一本书给你,也许对你有帮助,《JavaScript王者归来》这本书挺好的。

#18


ECMAScript是基于对象(object-based)的编程语言,在宿主环境中执行计算或操作对象。
ECMAScript没有像C++,Smalltalk,Java等语言中的真正的类,但是它支持构造器(constructors)。
ECMAScript支持基于原型的继承。

参见: ECMAScript深入浅出

#1


太深奥了!

#2


一般认为是面向对象的,但是基于对象的,可以理解为面向对象的

#3


好像不是面向对象的语言,却可以使用面向对象的思维去实现代码编写,

#4


JavaScript是基于面向对象。
JS里面的继承是模拟来实现的,那个继承,你可以理解为复制父类的方法和属性。
这个你自己可以试试,你先写一个类,然后用原型继承或者别的方式都可以,然后,在修改一个父类的方法,你在调用子类继承自父类的那个方法,这个时候,两个方法的执行结果是否一样。

#5


个人认为是基于对象的。
谁说基于对象的就没有继承?
没有继承的话,那么多的系统内建对象难道都是兄弟关系???
没有必要死扣这个概念,自己理解就好。

#6


应该是基于对象的,而java才是真正面向对象的。

#7


js不是原生支持继承,而是通过prototype去模拟的,所以是基于对象,不是面向对象

#8


基于对象。

#9


自己体会吧..

#10


javascript 没有"类"的概念.要放下对象和类,达到"对象本无根,类型亦无形"的境界确实是件不容易的事情啊。所以,javascript中没有"类",类已化为无形,与对象融为一体。正是由于放下了"类"这个概念,javascript的对象才有了其他编程语言没有的活力。
javascript的所有function类型的对象都要有一个prototype属性。这个prototype属性本身又是一个object类型对象,因此我们可以给这个prototype对象添加任意的属性和方法。既然prototype是对象的"原型",那么由该函数构造出来的对象应该都会具有这个"原型"的特征。事实上,在构造函数prototype上定义的所有属性和方法,都是可以通过构造的对象直接访问和调用的。也可以这么说,prototype提供了一群同类对象共享属性和方法的机制。

#11


基于对象的 不是面向对象的

#12


这个区别对JS的使用没影响

#13


不管是那种,js都比它先进方便,java还是C#都没有js灵活。

#14


JavaScript是基于面向对象。
JS里面的继承是模拟来实现的,那个继承,你可以理解为复制父类的方法和属性。
这个你自己可以试试,你先写一个类,然后用原型继承或者别的方式都可以,然后,在修改一个父类的方法,你在调用子类继承自父类的那个方法,这个时候,两个方法的执行结果是否一样。

heh 

#15


刚开始学JavaScript,努力吧

#16


Javascript不能實現多態吧?

#17


推荐一本书给你,也许对你有帮助,《JavaScript王者归来》这本书挺好的。

#18


ECMAScript是基于对象(object-based)的编程语言,在宿主环境中执行计算或操作对象。
ECMAScript没有像C++,Smalltalk,Java等语言中的真正的类,但是它支持构造器(constructors)。
ECMAScript支持基于原型的继承。

参见: ECMAScript深入浅出