美文网首页
理解JavaScript 中的原型模式

理解JavaScript 中的原型模式

作者: moofyu | 来源:发表于2020-04-25 23:25 被阅读0次

原型对象的创建

  • 我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向函数的原型对象。

原型对象

  • 所有的原型对象都会自动获得一个constructor(构造函数)属性,这个属性指向prototype属性所在函数的。

  • 原型对象还有很多从Object继承来的属性和方法。

  • 当调用构造函数创建一个新实例后,该实例的内部将包含一个指针(内部属性),指向构造函数的原型对象--[[prototype]]。

[[prototype]]

这个是一个指针,这指针指向原型对象。 脚本没有标准的方式访问这个[[prototype]],但FireFox Safari Chrome 都支持一个属性称为proto (称为“隐式原型”)

连接存在于实例和原型对象之间,而不是实例与构造函数。

Person–> Person.prototype <–person1

  • 上图展示了Person构造函数、Person的原型属性以及现有的两个实例之间的关系。

  • 构造函数的prototype属性指向原型对象,原型对象的constructor属性又指回了构造函数!

  • 原型对象除了包含constructor属性之外,还包括后来添加的其他属性。Person的每个实例都包含一个内部属性——“proto”,这个属性仅仅指向了

  • Person.prototype,即:Person.proto === Person.prototype;换句话说,它们与构造函数没有直接关系。

isPrototypeOf

判断某个实例和某个原型的对应关系。

Person.prototype.isPrototypeOf(person1);//true

它就是判断实例的[[prototype]]是否指向调用这个方法的对象。

Object.getPrototypeOf

ES5新方法,用来获取一个实例的原型。

Object.getPrototypeOf(person1)==Person.prototype;   // true

Object.getPrototypeOf(person1).name; // "Nicholas"

返回的原型,可以访问这个原型中的属性方法值。
我们在使用原型继承的时候会用到这个方法。

原型链

原理:每当代码读取某个对象的某个属性时,都会执行一次搜索,目标是具有给定名字的属性。搜索首先从对象实例本身开始,如果在实例中找到了具有给定名字的属性,则返回该属性的值;如果没有找到,则继续搜索指针指向的原型对象,在原型对象中搜索给定名字的属性。如果搜索到了属性就停止。仍然搜索不到,就搜索这个原型对象的上一级的原型对象,直到Object.prototype,这个是所有对象的根原型对象,它的上一级是null。

文章参考

相关文章

  • 原型和原型链篇

    原型和原型链 1.理解原型设计模式以及JavaScript中的原型规则 原型设计模式JavaScript是一种基于...

  • 原型和原型链

    一、理解原型设计模式以及 JavaScript 中的原型规则 设计模式 工厂模式 在函数内创建一个对象,给对象赋予...

  • javascript基础知识问答——原型和原型链

    1.理解原型设计模式以及JavaScript中的原型规则 2.instanceof的底层实现原理,手动实现一个in...

  • 简单认识 JS 原型与原型链

    原型是JavaScript中一个比较难理解的概念, 为深入理解JavaScript 中的原型、原型链,整理下思路。...

  • 理解JavaScript 中的原型模式

    原型对象的创建 我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向函数的原型对象。...

  • Javascript学习笔记-原型链

    对于Javascript原型链,是Javascript中很重要的内容,要理解关键有三点:Javascript中原型...

  • 原型、原型链

    理解JavaScript原型 彻底理解JavaScript原型 原型 原型是一个对象,所有对象都可以成为原型,其...

  • JavaScript创建对象

    JavaScript中创建对象有以下七种方式: 工厂模式构造函数模式原型模式构造函数和原型组合模式动态原型模式寄生...

  • 前端基础整理

    如何理解JavaScript原型链JavaScript中的每个对象都有一个prototype属性,我们称之为原型,...

  • Javascript 基于原型的面向对象系统编程

    Javascript是使用克隆的原型模式。 1. 原型编程的规则 所有的数据都是对象(javascript中不是所...

网友评论

      本文标题:理解JavaScript 中的原型模式

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