首页 > 其他分享 >原型与原型链

原型与原型链

时间:2024-06-18 20:32:59浏览次数:23  
标签:__ proto 对象 原型 prototype 属性

原型与原型链

JavaScript 只有一种结构:对象。每个对象(object)都有一个私有属性指向另一个名为原型(prototype)的对象。原型对象也有一个自己的原型,层层向上直到一个对象的原型为 null。null没有原型。

备注: 指向对象原型的属性并不是 prototype。它的名字不是标准的,但实际上所有浏览器都使用 __proto__。访问对象原型的标准方法是 Object.getPrototypeOf()。

{ __proto__ : ... }语法与 obj.__proto__ 访问器

一个形式为 __proto__: value 或 "__proto__": value 的属性定义并没有创建一个名称为 __proto__ 的属性。相反,如果提供的值是一个对象或 null 值,它将创建对象的 [[Prototype]] 指向该值(如果该值不是一个对象或 null,该对象不会被改变)。
{ __proto__: ... } 语法与 obj.__proto__ 访问器不同:前者是标准且未被弃用的。

__proto__ & prototype & constructor

__proto__ 属性是对象独有的,它由一个对象指向一个对象,即指向它的构造函数的prototype属性(这个属性的值为object或null),这个属性的终点是null(Object.prototype)

prototype是函数独有的属性,它由一个函数指向一个一个对象,它的含义是函数的原型对象,也就是它作为构造函数创建的实例的原型对象,即 f1.__proto__ === Foo.prototype

constructor属性是对象才拥有的,它是由一个对象指向一个函数,含义就是该对象的构造函数,Function()的构造函数是它自己,所以constructor的终点是Function()这个函数

标签:__,proto,对象,原型,prototype,属性
From: https://www.cnblogs.com/xieco/p/18254700

相关文章

  • js实例对象读写原型对象成员
    在JavaScript中,实例对象可以读写原型对象的成员。原型对象是一个对象,用于存储共享的属性和方法,它是通过构造函数创建的实例对象的共享属性和方法的来源。你可以通过以下几种方式来读写原型对象的成员:通过实例对象的__proto__属性来读取原型对象的成员。__proto__属性指向......
  • 游戏原型系列:(1)乒乓广场——续
    书接上回,这一章我们介绍相机抖动、粒子特效、高亮材质等功能实现。一、最终效果二、相机抖动游戏玩法完成后,让我们看看是否能让游戏的展示变得更加有趣。当球击中某物时,让摄像头抖动是一个让玩家感受到强烈冲击的简单方法。这种方式模拟了玩家感受到球击中场地边缘的感觉。......
  • JavaScript 的原型链机制
    JavaScript的原型链机制是其继承模型的核心概念,它允许对象通过原型链访问和继承其他对象的属性和方法。原型链机制是实现JavaScript面向对象编程的基础。1.原型和原型链的基本概念原型对象(prototype):每个JavaScript对象(除了null)都有一个与之关联的对象,这个对象就......
  • JavaScript prototype(原型对象)
     所有的JavaScript对象都会从一个prototype(原型对象)中继承属性和方法。在前面的章节中我们学会了如何使用对象的构造器(constructor):实例functionPerson(first,last,age,eyecolor){this.firstName=first;this.lastName=last;this.age=age;this.eye......
  • [行业原型] 汽车供应链多地分销一站式云端解决方案
    互联网改变了企业经营模式、竞争环境,同时还在改变企业的交易方式,影响着企业间的协作。全球化电子商务环境下,传统的供应链管理模式不能适应新环境下供应链管理要求,新的供应链管理模式—eSCM。eSCM是将分销管理、客户资源管理、供应商资源管理和电子商务融合到基于互联网的电......
  • 一图搞懂原型和原型链
    构造函数Person,通过new实例化它的一个实例person,实例person的原型就是构造函数Person的prototype属性,即Person.prototype。functionPerson(){}//构造函数varperson=newPerson()//实例//person的原型===Person.prototype实例的原型Person.pro......
  • 一文直接搞懂原型和原型链
    前言复习原型和原型链的笔记;后续继续更新完善原型对象functionCourse(){};constcourse1=newCourse();constcourse2=newCourse()*1.Course-用来初始化创建对象的函数|类course1._proto_===Course.prototype*2.course1-根据原型创建出来的实......
  • 设计模式之原型模式
    问题背景在开发一个图形设计软件时,我们面临一个常见的需求:用户需要频繁地创建和编辑各种图形,如圆形、矩形和多边形。其中,许多图形元素在属性上非常相似,比如颜色、大小或样式可能只有细微的差别。用户希望能够快速复制一个已有图形,然后对其进行小的修改,而不是每次都从零开始......
  • Spring Bean多例作用域:原型模式的深度剖析与源码之旅
    1.引言在Spring框架中,Bean的多例作用域(prototype)提供了一种重要的实例化模式,它允许每次从Spring容器中请求Bean时都创建一个新的实例。这种模式在处理需要频繁创建和销毁实例的场景,以及不希望在不同请求或会话之间共享状态的Bean时特别有用。本文将通过深度剖析多例作用域......
  • 23种设计模式之原型模式
    原型模式1、定义原型模式:使用原型实例指定要创建对象的类型,并且通过复制这个类型来创建新的对象。2、深克隆与浅克隆根据在复制原型对象的同时是否复制包含在原型对象中引用类型的成员变量,克隆机制可以分为浅克隆和深克隆。2.1浅克隆简单来说浅克隆就是原型对象被复......