美文网首页
JavaScript原型和原型链和constructor简述

JavaScript原型和原型链和constructor简述

作者: acsamson | 来源:发表于2019-05-26 20:19 被阅读0次

    所有对象都有自己的原型对象(prototype)。一方面,任何一个对象,都可以充当其他对象的原型;另一方面,由于原型对象也是对象,所以它也有自己的原型。因此,就会形成一个“原型链”(prototype chain)最终都可以上溯到Object.prototype Object.prototype对象有没有它的原型呢?回答Object.prototype的原型是null。null没有任何属性和方法,也没有自己的原型。因此,原型链的尽头就是null。

    image

    为什么要有原型

    就是为了解决共享属性问题

    同一个构造函数创建的实例之间是无法共享属性的

    image image

    判断对象是不是另一个对象的原型

    • instanceof判断是不是原型的`实例``

    • ``isPrototypeOf() || Object.getPrototypeOf()`判断是不是原型

    • hasOwnProperty() || in判断是不是原型中的属性还是实例自己的属性

    什么是proto

    他是对象的一个属性

    instance.constructor.prototype === instance.proto

    实例的构造者就是构造函数, 构造函数原型就是等于实例的原型

    用来表示所继承的原型是谁

    JavaScript 中任意对象都有一个内置属性 [[Prototype]] ,在ES5之前没有标准的方法访问这个内置属性,但是大多数浏览器都支持通过proto来访问

    现在已经废弃

    不推荐使用

    解释下constructor

    constructor类似双向链表的front修改原型的时候也要修改constructor

    prototype对象有一个constructor属性,默认指向prototype对象所在的构造函数。

    constructor属性的作用是,可以得知某个实例对象,到底是哪一个构造函数产生的。

    image image image

    相关文章

      网友评论

          本文标题:JavaScript原型和原型链和constructor简述

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