前端学习笔记(3) - JavaScript对象分类-阿里云开发者社区

开发者社区> sullay> 正文

前端学习笔记(3) - JavaScript对象分类

简介: JavaScript中的对象分类 宿主对象(host Objects):由 JavaScript 宿主环境提供的对象,它们的行为完全由宿主环境决定。 内置对象(Built-in Objects):由 JavaScript 语言提供的对象。
+关注继续查看

JavaScript中的对象分类

  • 宿主对象(host Objects):由 JavaScript 宿主环境提供的对象,它们的行为完全由宿主环境决定。
  • 内置对象(Built-in Objects):由 JavaScript 语言提供的对象。

    • 固有对象(Intrinsic Objects ):由标准规定,随着 JavaScript 运行时创建而自动创建的对象实例。
    • 原生对象(Native Objects):可以由用户通过 Array、RegExp 等内置构造器或者特殊语法创建的对象。
    • 普通对象(Ordinary Objects):由{}语法、Object 构造器或者 class 关键字定义类创建的对象,它能够被原型继承。

函数对象与构造器对象

JavaScript中使用对象来模拟函数与构造器。JavaScript 为这一类对象预留了私有字段机制,并规定了抽象的函数对象与构造器对象的概念。

函数对象的定义是:具有 [[call]] 私有字段的对象,构造器对象的定义是:具有私有字段 [[construct]] 的对象。我们可以这样说,任何对象只需要实现 [[call]],它就是一个函数对象,可以去作为函数被调用。而如果它能实现 [[construct]],它就是一个构造器对象,可以作为构造器被调用。

程序员使用function关键字创建出来的对象同时拥有[[call]]、[[construct]]属性,所以既可以被当做函数调用也可以当做构造器,只不过它们的行为总是相似的。当返回值为对象时函数对象与构造器对象的作用是相同的。当作为构造器对象使用时过程如下:

  1. 以 Object.protoype 为原型创建一个新对象;
  2. 以新对象为 this,执行函数的 [[call]];
  3. 如果 [[call]] 的返回值是对象,那么,返回这个对象,否则返回第一步创建的新对象。

es6中的=>函数只能被当做函数调用。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JavaScript之对象拷贝与赋值
今天在做公司面试题的时候,遇到了一道关于JavaScript之对象拷贝与赋值的问题,突然觉得很有意义,想和大家一起来分享一下! 首先,先摆出代码,如下: /** * Created by Administrator on 2016/12/7.
669 0
读书笔记 之《Thinking in Java》(对象、集合、异常)
一、前言     本来想看完书再整理下自己的笔记的,可是书才看了一半发现笔记有点多,有点乱,就先整理一份吧,顺便复习下前面的知识,之后的再补上。     真的感觉,看书是个好习惯啊,难怪人家说“书籍是人类进步的阶梯”。
991 0
2020年,我们该如何学习 WEB 前端开发
每当想要开始学习,脑子里总会跳出一系列问题:WEB前端的学习先后顺序是什么?PC端必须要掌握哪些知识和框架?移动端要掌握哪些知识和框架?TypeScript和node.js是否为可学可不学?新手应该按照什么先后次第学习呢?本文是阿里巴巴淘系技术部高级前端工程师——小问的个人经验总结,希望帮到处于迷茫期的你!
2818 0
Fundebug前端JavaScript插件更新至1.7.1,拆分录屏代码,还原部分Script error.
摘要: BUG监控插件压缩至18K。 1.7.0拆分了录屏代码,BUG监控插件压缩至18K,另外我们还原了部分Script error,帮助用户更方便地Debug。请大家及时更新哈~ 拆分录屏代码 从1.7.0版本开始,我们拆分了录屏代码。
1349 0
前端学习 -- Css -- 定义列表
定义列表用来对一些词汇或内容进行定义 使用dl来创建一个定义列表 dl中有两个子标签 dt : 被定义的内容 dd : 对定义内容的描述 同样dl和ul和ol之间都可以互相嵌套 DOCTYPE html> ...
674 0
标签及其分类|学习笔记
快速学习标签及其分类
20 0
《21天学通Java(第6版)》—— 1.3 对象和类
面向对象编程是基于现实世界的情况进行建模的,对象由多种更小的对象构成。
1271 0
JavaScript面向对象的编程指南学习笔记
JavaScript面向对象的编程指南学习笔记 第一章 1,用自己的语言描述出,什么是对象、类、封装、聚合、继承、多态? 对象,拥有属性和方法的任何抽象概念。 类,可以实例化,有共同属性或方法(行为)的相似对象,的模板 封装,提供接口,隐藏接口的实现 聚合,将大功能(对象)拆分成小功能(小对象)去实现的逆过程。
8848 0
JavaScript使用原型判断对象类型
1. constructor属性 在JavaScript创建对象(二)——构造函数模式中,我们说过可以使用对象的constructor属性判断对象的类型:p1.constructor === Person,可能当时就有细心的读者会想,我们并没有给这个对象添加过constructor,这个属性是从哪儿来的呢?讲过原型之后,我们知道这个属性是原型中的,所以一般重写原型时也都会把constructor补上。
1134 0
+关注
18
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载