首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript中的内置对象是什么?

Javascript中的内置对象是什么?
EN

Stack Overflow用户
提问于 2017-07-26 00:18:27
回答 3查看 389关注 0票数 2

我读到基于对象和面向对象的区别之一是前者支持内置对象(例如,Javascript中的窗口对象).So,什么是内置对象,以及为什么在面向对象的语言中没有内置对象。

EN

回答 3

Stack Overflow用户

发布于 2017-07-26 00:25:32

这实际上不是这两个术语之间的区别。

对于被认为是“面向对象”的编程语言,它必须支持以下四个编程概念:

  1. 继承
  2. Encapsulation
  3. Abstraction
  4. Polymorphism

有许多语言支持这些 (Java、C/C++、C#、JavaScript等)。

然而,有些语言不是这样的,一个著名的例子就是我们现在所说的“经典VB”(在引入.NET之前的Visual Basic )。该语言可以模拟继承,但语言中没有为它构建的实际机制,所以尽管"Classic VB“具有本机对象,但它是一种”基于对象“、”非面向对象“的编程语言,因为它确实支持对象的概念,但并不是真正的OOP语言所需的所有方面。

应该注意的是,许多OOP语言都是建立在“类”作为生成对象的机制的概念之上的。而且,虽然这是一种非常流行的对象架构方法,但并不要求语言必须是面向对象的。JavaScript没有类(尽管有class关键字),它有“原型”,它们是实现对象的架构。

您提出的关于“原生”对象的问题与此无关。您很可能会读到本机对象与上的所有内容相关,但该页面上有许多错误,我对该页面进行了编辑以使其更准确。一种语言是否具有“内置”或“本机”对象与它是面向对象还是基于对象无关,因为这两种类型的语言都是以对象为中心的(我自己的术语)。例如,VB6是一种基于对象的语言,但支持大量的本机对象,而VB .NET (它的后继者)是面向对象的,也支持大量的本机对象。

我要告诉你的是,“原生”对象就是直接构建到语言规范本身中的对象,运行时环境可以在内部访问它。在JavaScript中,一些示例可能是StringDateArrayRegExMathObject等。请注意,虽然您在问题中提到了window,但window不是本机JavaScript对象,该对象是由托管JavaScript运行时的浏览器提供的。如果您在Node.js中运行JavaScript,window将不可用,因为它不是JavaScript原生的,并且节点不向运行时提供这样的对象。

这里有一些很好的链接,可以帮助您理解OOP概念以及它们在JavaScript中的工作方式:

票数 2
EN

Stack Overflow用户

发布于 2017-07-26 00:23:01

全局对象是window object。它既不存在于Java中,也不存在于Node.js的JavaScript中,因为它引用了浏览器窗口。

有关所有全局对象的信息请单击此处:Global Objects (MDN)

如你所见,这里有很多全局对象。例如,在Java和JavaScript中都存在Array全局对象。

票数 0
EN

Stack Overflow用户

发布于 2017-07-26 00:23:15

在像Java这样的面向对象语言中有“内置”的对象(或者大多数人会这样认为),只要想想基本的Object (继承层次结构的顶层)和标准库中的许多最核心的特性就可以了。

我的印象是,人们会说这句话是为了指出JavaScript中仍然有一些对象,但是你实际上不能像在其他语言中那样声明/创建一个全功能的类。但是,我的意思是,C#和Java中的数组和JavaScript中的数组一样是一个对象。

为了让人将一种语言称为“面向对象的”,我假设它需要类(或类似的构造,Go中的struct ),这就是为什么你通常不会将JS描述为面向对象的。也就是说,类已经被添加到ES6中,所以它现在可以说是完全面向对象的,只是使用了一个弱类型系统。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45308671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档