JS总结(JS世界构造顺序、学习计划)

1.JS唯一公式

  • 对象.__proto__ === 其构造函数.prototype

2.根公理
(公理是人为规定的,是不容置疑的)

  • Object.prototype是所有对象的(直接或间接)原型

3.函数公理

  • 所有函数都是由Function构造的
  • 任何函数.__proto__ === Function.prototype
  • 任何函数包括:Object、Array(数组)、Function

4.难点

  • [的原型] 等价于 .__proto__
    只不过.__proto__正好是某个函数的prototype
  • 直接原型和间接原型
    对于普通对象来说,Object.prototype是直接原型
    对于数组、函数来说,Object.prototype是间接原型
  • Object.prototypeObject.prototype 对象的区别
    Object.prototype表示一个地址
    这个地址对应的对象是根对象(语言上依旧认为:地址就是对象)
    Function是构造除了 Object.prototype这个地址,不是对象。
    对象里从来都不包含另一个对象

JS世界

1.JS世界的构造顺序

  1. 创建根对象#101(toString、value of,其原型设定null),根对象没有名字
  2. 创建函数的原型#208(call、apply),原型__p为#101
  3. 创建数组的原型#404(push、pop),原型__p为#101
  4. 创建没有名字的Function函数#342,原型__p为#208
  5. Function.prototype等于#208
  6. 此时发现Function.__proto__ ===Function.prototype
  7. 用Function创建Object#909(实际没有名字),原型__p为#208(公式,等于其构造函数的prototype值)
  8. Object.prototype等于#101(把对象的原型地址存到上面),而Object是对象的构造函数,因此对象.__p === Object.prototype
  9. 用Function创建Array#1101(实际没有名字),原型__p为#208(公式,等于其构造函数的prototype值)
  10. Array.prototype等于#404(把数组的原型地址存到上面)。
  11. 创建window对象(不属于JS世界是浏览器的)
  12. 用window的ObjectArrayFunction属性将7和0中的函数命名
    如:window.Object、window.Array、window.Function
    从这一刻起,Object和Array才有了名字,其值分别为#909、#1101
  13. 记住一点,JS创建一个对象时,不会给这个对象名字的,要有了window对象才会有名字
    我们要通过名字才能访问这个对象
    根是没有名字的,它是一出生就有的
    只能说:window.Object.prototype存了根对象的地址。
    在这里插入图片描述

2.构造函数

  1. new Object()创建 obj1
  2. new会将obj1的原型__p设置为Object.prototype
  3. Array和Funcitont同理

3.漂亮的图示
在这里插入图片描述

4.总结

4.1 构造函数

  • 是用来构造函数的
  • 会预先存好对象的原型,原型的原型是根
  • new的时候会讲对象的__p指向原型

4.2 对象

  • 所有对象都直接或间接指向根对象
  • 如果对象想要分类,就在原型链上加一环
  • 用构造函数可以加这一环

4.3 思考问题

  • Object.prototype的原型是什么?
    思路:[的原型]就是问__p是什么
    答:根据7个数据类型推测,Object.prototype是对象,对象的原型等于其构造函数的prototype,但由根公理Object.prototype是所有对象的原型得到它是根对象,因此原型为null
  • Function.prototype的原型是什么?
    答:Function.prototype.__p__ === Object.prototype
  • Function的原型是什么?
    答:由公式得Funcition.__proto__ === Function.prototype
  • Array.prototype.toString的原型是什么?
    答:Array.prototype.toString是一个函数,函数的构造函数是Function,由公式得到其原型是Function.prototype
    在这里插入图片描述

JS学习计划

  • 第一阶段
    了解:JS语法、特性、对象、数组、函数等
  • 第二阶段
    了解:AJAX、设计模式、封装、面向对象、MVC
  • 第三阶段
    Vue和React全家桶
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Map()构造函数是JavaScript中的一种数据结构,用于存储键值对。它类似于对象,但有一些不同之处。 Map()构造函数的语法如下: ```javascript new Map([iterable]) ``` 其中,可选参数`iterable`是一个可迭代对象,它包含键值对的列表。如果提供了`iterable`参数,则Map()构造函数会使用这些键值对来初始化Map对象。 Map()构造函数创建一个空的Map对象,如果没有提供`iterable`参数。 Map对象的特点如下: 1. Map对象中的键可以是任何类型,包括基本类型和对象类型。 2. Map对象中的值可以是任何类型。 3. Map对象中的键是唯一的,不会重复。 4. Map对象中的键值对是有序的,按照插入顺序排列。 Map对象的常用方法如下: 1. `set(key, value)`:向Map对象中添加一个键值对。 2. `get(key)`:获取Map对象中指定键的值。 3. `has(key)`:判断Map对象中是否存在指定键。 4. `delete(key)`:从Map对象中删除指定键值对。 5. `clear()`:清空Map对象中的所有键值对。 6. `size`属性:获取Map对象中键值对的数量。 下面是一个使用Map()构造函数的示例: ```javascript // 创建一个空的Map对象 let myMap = new Map(); // 向Map对象中添加键值对 myMap.set("name", "Tom"); myMap.set("age", 18); myMap.set("gender", "male"); // 获取Map对象中指定键的值 console.log(myMap.get("name")); // 输出:Tom // 判断Map对象中是否存在指定键 console.log(myMap.has("age")); // 输出:true // 从Map对象中删除指定键值对 myMap.delete("gender"); // 清空Map对象中的所有键值对 myMap.clear(); // 获取Map对象中键值对的数量 console.log(myMap.size); // 输出:0 ``` 总之,Map()构造函数是JavaScript中一种非常有用的数据结构,可以方便地存储和操作键值对。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值