美文网首页
JS对象分类

JS对象分类

作者: Marshall3572 | 来源:发表于2021-02-26 19:56 被阅读0次

推荐几篇文章
ES6新特性总结
JS 中 proto 和 prototype 存在的意义是什么?
JS 的 new 到底是干什么的?
你可以不会 class,但是一定要学会 prototype

构造函数

定义:可以构造对象的函数。
规范:构造函数首字母大写,构造出来的函数首字母小写。

原型和公用属性的关系

共有属性的集合就是原型
X.prototype和x.proto中存的都是地址。
对象.proto === 构造函数的.prototype

Object.prototype的原型是什么?
像Object这种本身就存在的对象,没有原型,其Object.prototype.proto被设置为null

分类
有很多对象拥有一样的属性和行为,我们要把他们归为一类。

在JS中,数组是一个对象。
let arr = [1,2,3]
let arr = new Array(1,2,3) //元素为1,2,3
let arr = new Array(3) //长度为3

window是由Window构造出来的,window.proto === Window.prototype
window.Object是由window.Function构造,因为所有函数都是由window.Function构造的。
那window.Function又是谁构造的呢?
也是window.Function,其实是浏览器构造了Function,然后指定它的构造者是自己。

new X()操作帮我们做了很多事情

  • 自动创建一个空对象
  • 自动将该空对象的原型指向 X.prototype(即将 X.prototype 保存的地址复制到空对象.proto 里)
  • 自动将空对象作为 this 来运行构造函数
  • 自动 return this

class语法

class中原型的写法

class Square{
    constructor(width){
        this.width = width
}
    getArea(){
        return this.width * this.width
}
}

总结:
关于prototype属性,

  • 所有函数一出生就有一个prototype属性
  • 所有prototype一出生就有constructor属性
  • 所有constructor一出生就保存了对应函数的地址
  • 如果一个函数不是构造函数,他依然拥有prototype属性,只不过这个属性暂时没什么用
  • 如果一个对象不是函数,那么这个对象一般来说没有prototype属性,但一定有proto属性。

关于Object.prototype,

  • Object.prototye 是「Object 构造出来的对象 obj」的原型,即 obj.proto === Object.prototype
  • Object.proto 是 Object 的原型,由于 Object 是函数,而所有函数的原型都是 Function.prototype,所以 Object.proto === Function.prototype
  • Object.prototye 不是 Object 的原型,Object.proto 才是 Object 的原型(还记着之前答过「x.原型 等价于 x.proto」吗,现在只不过是把 x 替换成 Object。很多人都搞不清楚 Object.proto 和 Object.prototype 哪一个才是 Object 的原型,其实只要记住公式就好办了)

相关文章

  • javascripts面向对象基础

    js中对象的分类 对象的分类: 1.内置对象:由ECMA实现 的,不依赖于宿主环境的对象,这些对象在js程序执行之...

  • JS对象分类

    分类原因:分类就可以少占内存 new语法 将函数与原型结合 函数的特征 都有prototype属性,存储原型地址 ...

  • JS对象分类

    推荐几篇文章ES6新特性总结[https://fangyinghang.com/es-6-tutorials/]J...

  • 四、面向对象编程

    js的面向对象,有其独特之处。js不区分类和实例的概念,而是通过原型(prototype)来实现面向对象编程。如:...

  • js原型、原型链

    为什么需要对象分类? 类型是对 JS 中数据的分类JS 中的类型有:数字、字符串、布尔、符号Symbol、null...

  • JavaScript中对像的属性

    在JavaScript中,对象是属性的无序集合,通过对JS属性的理解可以更好地了解JS对象。 属性的构成与分类 在...

  • 【六】JavaScript对象:你知道全部的对象分类吗?

    JavaScript 中的对象分类 宿主对象:由JS宿主环境提供的对象,它们的行完全由宿主环境决定 内置对象:由J...

  • JS基本语法

    1、分类ECMAScript js基本语法与标准DOM Document Object Model文档对象模型BO...

  • JS基本语法

    1、分类 ECMAScript js基本语法与标准DOM Document Object Model文档对象模型B...

  • 第三课 js美化网页

    再议js对象 对象的分类: 1.内建对象 内建对象指由ES标准定义的对象,任何对ES标准的实现都可以使用这些对象 ...

网友评论

      本文标题:JS对象分类

      本文链接:https://www.haomeiwen.com/subject/tcfufltx.html