栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JavaScript是面向对象的吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaScript是面向对象的吗?

IMO(并且仅是一种意见) 面向 对象语言 主要特征是它将支持多态。几乎所有动态语言都可以做到这一点。

下一个特征是封装 ,这在Javascript中也很容易做到。

但是,在许多人的心中,继承 (特别是实现继承)将在某种语言是否符合被称为面向对象的语言方面取得平衡。

Javascript确实提供了一种相当容易的方法来通过原型继承实现,但这是以封装为代价的。

因此,如果您面向对象的标准是多态性,封装和继承的经典三人组合,那么Javascript不会通过。

编辑 :提出了一个补充问题“原型继承如何牺牲封装?” 考虑以下非原型方法的示例:

function MyClass() {    var _value = 1;    this.getValue = function() { return _value; }}

_value属性是封装的,不能由外部代码直接修改。我们可能会在类中添加一个更改器,以完全由属于该类的代码控制的方式对其进行修改。现在考虑对同一个类的原型方法:

function MyClass() {  var _value = 1;}MyClass.prototype.getValue = function() { return _value; }

好吧,这坏了。由于分配给getValue的函数不再在_value范围内,因此无法访问它。我们将需要将_value提升为的属性,

this
但这将使其在为该类编写的代码的控制范围之外可访问,因此封装被破坏了。

尽管如此,我仍然投票赞成Javascript是面向对象的。为什么?因为给定了OOD,所以我可以用Javascript实现它。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/432388.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号