`

犀牛书第五版读书笔记——Chapter 9. Classes, Constructors, and Prototypes(第一部分)

阅读更多
1.结合使用new操作符和function(),会创建一个新的对象。完整的过程是这样的:首先new出一个object。然后将function.prototype的所有属性映射到新object上。(注意,不是复制,而是建立了一个映射关系)最后以新object为对象调用function

2.要注意,object本身并没有prototype属性,有prototype属性的是function。但是当function作为构造函数使用时,其prototype的所有属性,都会被映射到object上。但object自身,是没有prototype属性的

3.函数的prototype属性是在其定义时,自动创建和初始化的。初始值是只有一个属性的对象,这唯一的属性是constructor,它反向指向这个函数自身

4.原型的属性并不是从prototype对象复制到新对象上,而是一种映射关系。这有2个很重要的意义,一是使用原型对象会减少内存的开销。二是即使在创建了对象以后再修改原型,修改的结果也会体现在先前创建的对象上

5.读取对象属性的过程。比如读取o.p,首先会查找o对象上是否有p属性,如果没有的话,那么会查找o的prototype对象上是否有p属性。这里要注意,由于prototype自身是一个对象,所以上述的读取过程也是适用的,即会先在prototype对象上查找是否有p属性,然后到prototype的构造函数的prototype对象上查找。这个过程是递归的,直到查找到Object对象

6.写对象属性的过程,则不存在上述的继承现象。比如设置o.p = 23;那么如果o对象有p属性,则将p属性的值设置为23。如果不存在p属性,则创建p属性,并设置为23,而不是再去递归查找prototype对象

7.所有的对象都从它们的构造函数的prototype对象上继承属性。那么它们是如何继承到Object类的属性的呢?这是因为prototype对象自身也是一个对象,它是由Object()构造函数创建的,所以prototype对象自身也从Object.prototype对象上继承了一部分属性
分享到:
评论

相关推荐

    Java.SE.7.Programming.Essentials

    Chapter 1. Introducing the Basics of Java Chapter 2. Applying Data Types in Java Programming Chapter 3. Using Java Operators and Conditional Logic Chapter 4. Using Java Arrays Chapter 5. Using ...

    Guide to Scientific Computing in C++

    1 Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1 A Brief Introduction to C++ . . . . . . . . . . . . . . . . . . . 1.1.1 C++ is “Object-Oriented” . . . . . . . . . . . ....

    Ajax for Web Application Developers(Ajax网站开发)

    Chapter 1. Introduction to Ajax The XML DOM Measuring the Benefits Chapter 2. The Request An In-Depth Look at XMLHttpRequest Creating the Object Asynchronous Data Transfers The Ready ...

    C++标准库(第二版)英文版.pdf

    C++标准库(第二版)英文版.pdf 非扫描版+源代码 Prefaceto the SecondEdition xxiii Acknowledgments for the SecondEdition xxiv Prefaceto the FirstEdition xxv Acknowledgments for the FirstEdition xxvi 1 ...

    javascript权威指南(第六版)

    9. Classes and Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 9.1 Classes and Prototypes 200 9.2 Classes and Constructors 201 9.3 ...

    javascript语言精粹(中英文版)

    Chapter 1. Good Parts Section 1.1. Why JavaScript? Section 1.2. Analyzing JavaScript Section 1.3. A Simple Testing Ground Chapter 2. Grammar Section 2.1. Whitespace Section 2.2. Names Section ...

    SystemVerilog Reference Manual 3.1a(中英文版)+最新SV IEEE 标准

    3.2 Data type syntax...............................................................................................................................9 3.3 Integer data types ...............................

    OpenGL ES 3.0 Programming Guide, 2nd Edition

    Chapter 1. Introduction to OpenGL ES 3.0 Chapter 2. Hello Triangle: An OpenGL ES 3.0 Example Chapter 3. An Introduction to EGL Chapter 4. Shaders and Programs Chapter 5. OpenGL ES Shading Language ...

    C程序设计教学课件:CHAPTER5CLASSES.pptx

    1. 结构化编程与面向对象编程(Structured Programming vs. Object-Oriented Programming) 结构化编程侧重于过程,将程序视为一系列函数操作数据。而面向对象编程(OOP)则基于对象,对象包含了数据和操作这些数据...

    Packt.Swift.Functional.Programming.2nd.Edition.2017

    Chapter 1. Questions Chapter 2. Getting Started with Functional Programming in Swift Chapter 3. The Swift programming language Chapter 4. Summary Chapter 5. First-class functions Chapter 6. Higher-...

    Google C++ International Standard.pdf

    1 Scope 1 2 Normative references 2 3 Terms and definitions 3 4 General principles 7 4.1 Implementation compliance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4.2 Structure ...

    C 程序设计教学课件:Chapter 3 class and object.ppt

    Chapter 3 of the C++ programming course delves into the fundamental concepts of object-oriented programming, specifically focusing on classes and objects. Object-oriented programming (OOP) is a ...

    大数据学习笔记.pdf

    第一部分 Spark学习 ....................................................................................................................... 6 第1章 Spark介绍 ..............................................

    Practical C++ Programming C++编程实践

    Advanced Classes Derived Classes Virtual Functions Virtual Classes Function Hiding in Derived Classes Constructors and Destructors in Derived Classes The dynamic_cast Operator Summary Programming ...

    源码 Dr.Bob’s Delphi Prism XE Development Essentials June 2011

    Delphi Prism Projects and Namespaces 9 Methods ... 11 Unnamed Constructors ............................................................. 12 IDE: Build and Debug ..........................................

Global site tag (gtag.js) - Google Analytics