原型对象和对象原型以及原型链

作者&投稿:焦詹 (若有异议请与网页底部的电邮联系)
~ 1.原型就是原型对象------prototype    作用就是:共享方法。

每一个构造函数都有一个 prototype 属性,指向另一个 对象 , 构造函数通过原型分配的函数是所有对象所共享的 。由于在构造函数中定义的方法在创建实例时,都会开辟一个新的内存从而造成内存浪费的问题,这时我们就可以把那些不变的方法直接定义在prototype对象上,这样所有的对象的实例就可以共享这些方法。

2.对象原型__proto__

对象都会有一个__proto__属性,指向 构造函数的prototype 原型对象 ,之所以我们对象可以使用原型对象的属性和方法,就是因为对象有__proto__原型的存在。

①实例.__proto__和构造函数.prototype是等价的

②方法的查找规则: 首先看实例对象上是否存在这个方法,如果存在就调用实例本身的方法,如果没有就去构造函数原型对象上去查找,如果还是没有就继续向Object.prototype中查找,直到返回null (就近原则)

③__proto__对象原型的意义就在于为对象的查找机制提供一个方向,它是一个非标准属性,因此实际开发中不可以使用这个属性,它只是内部指向原型对象。

对象原型 和构造函数 原型对象 里面都有一个属性:constructor。我们称 为构造函数 ,因为它 指回构造函数本身。

而__proto__原型的constructor也是同样指向的是构造函数 ,是通过 实例.__proto__ 先指向 原型对象 然后再 通过 constructor指向构造函数

很多情况下,我们需要 手动 的利用constructor这个属性 指回原来的构造函数 ,例如,我们修改了原来的原型对象, 给原型对象赋值的是一个对象 ,那么就必须手动的利用constructor指回原来的构造函数。在对象中写: constructor:目标构造函数。

①只要是 对象 就 有__proto__ 原型,指向 原型对象

② 实例 的原型对象里面的 __proto__ 原型指向的是 Object.prototype

③ Object.prototype 里面的 __proto__ 原型指向的是 null

④由__proto__原型连接而成的'链子'就是原型链


在JavaScript中,使用对象的什么属性来定义对象共享的属性和方法?
每个JavaScript对象都有一个内置的属性,名为prototype。prototype属性是一个对象,它是对象实例的原型对象。原型对象的属性不是对象实例的属性,而是继承自构造函数定义的属性。对于构造函数来说,prototype是作为构造函数的属性。对于普通函数来说,prototype属性基本无用。但是,对于构造函数来说,生成实例的...

说说原型(prototype)、原型链和原型继承
继承在JavaScript中指的是一个对象利用其他对象的属性和方法。通过构造函数call方法,可以实现属性的继承,而方法继承则通过复制并修改原型(Object.create)来完成。需要注意的是,避免直接引用,以保持对象的独立性。在性能方面,hasOwnProperty方法避免了在原型链上耗时的属性查找,仅检查对象本身是否具有特定...

Java开发设计模式中5种创建型模式
抽象工厂模式通过创建多个工厂类,解决普通工厂方法模式的代码修改问题。单例模式确保类在系统中只有一个实例,适用于资源密集型对象、核心控制类和多线程环境。建造者模式将复杂对象的创建过程分解为多个步骤,适合创建带有多个属性的复杂对象。原型模式通过复制已有对象来创建新对象,适用于需要频繁复制对象的...

spring框架中用到了哪些设计模式?
以某个对象为原型,复制出一个新的对象。两个对象内容相同,但是对象实例不同。 用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象...

原型和原型链的理解
3. 通过this.name进行赋值 4. 去执行构造函数内部的代码 5. 最终返回到this 图一的代码打印出来的结果为:上图就可以明了的证明构造函数和原型对象之间的关系,那么我们再来看实例和原型对象的关系。依照上面的关系图,实例的内部指针 proto 指向原型对象,构造函数 fn的原型也指向同一个原型对象。从...

谁能告诉我:计算机程序设计语言发展史和对程序设计语言未来的看法...
随着程序规模的不断扩大,在60年代末期出现了软件危机,在当时的程序设计模型中都无法克服错误随着代码的扩大而级数般的扩大,以至到了无法控制的地步,这个时候就出现了一种新的思考程序设计方式和程序设计模型---面向对象程序设计,由此也诞生了一批支持此技术的程序设计语言,比如eiffel,c++,java,这些语言都以新的观点去看...

什么是人力资源管理信息系统(HRMIS)
人力资源管理信息系统(HRMIS, Human Resources Management Information System),是指一个由具有内部联系的各模块组成的,能够用来搜集、处理、储存和发布人力资源管理信息的系统,该系统能够为一个组织的人力资源管理活动的开展提供决策、协调、控制、分析以及可视化等方面的支持。

JavaScript中什么是prototype原型对象?它有和作用?
在JavaScript中,prototype对象是实现面向对象的一个重要机制。每个函数就是一个对象(Function),函数对象都有一个子对象prototype对象,类是以函数的形式来定义的。prototype表示该函数的原型,也表示一个类的成员的集合。在通过new创建一个类的实例对象的时候,prototype对象的成员都成为实例化对象的成员。1...

什么是原型和原型链
如果这个原型对象也有自己的原型,那么就会形成一个链条。例如,当我们创建一个普通的JavaScript对象时,它的原型是Object的原型。而如果通过某个构造函数创建对象,那么这个对象的原型会指向该构造函数的原型对象,而构造函数的原型对象又可以继续向上查找属性和方法,最终形成了完整的原型链。这种机制使得...

JAVE和K-JAVE分别是什么意思,有什么区别。
Java语言的设计集中于对象及其接口 ,它提供了简单的类机制以及动态的 接口模型。对象中封装了它的状态变量以及相应的方法 ,实现了模块化和信息 隐藏 ;而类则提供了一类对象的原型 ,并且通过继承机制 ,子类可以使用父类 所提供的方法 ,实现了代码的复用。 3、分布性 Java是面向网络的语言。通过它提供的类库可以...

林西县18013407997: js中什么是原型对象和原型链 -
夹璧乳酸: 每个 JavaScript 对象内部都有一个指向其它对象的“指针”或者 “引用“, 并通过这种方式在对象之间建立了一种联系,形成了一种链式结构,我的理解这就是所谓的原型链.function F() {} // F 是一个函数,函数也是对象,而且每个函数都有...

林西县18013407997: javascript原型,原型链 有什么特点 -
夹璧乳酸: 特点:原型链实现了继承.<br>原型链存在两个问题:<br>a 包含引用类型值的原型属性会被所有实例共享.<br>b在创建子类型时,无法向超类型的构造函数中传递参数.<br>原型链:每个继承父函数的子函数的对象都包含一个内部属性_proto...

林西县18013407997: javascript中原型原型链有什么特点 -
夹璧乳酸: 原型链一直是个很抽象的概念,看不到,摸不着.随着最近对JavaScript进一步的学习,我对原型链有了一点理解,下面讲出来. 基础知识 在JavaScript中,一共有两种类型的值,原始值和对象值.每个对象都有一个内部属性[[prototype]],我们通常...

林西县18013407997: 如何更加简单的理解JS中的原型原型链概念 -
夹璧乳酸: 原型是上一辈,原型链就是直系血缘关系,上一辈的很多东西可以遗传到下一辈.这样理解有误差,但是也差不多了.

林西县18013407997: 什么叫原型?JavaScript里的原型是什么意思? -
夹璧乳酸: 原型链,顾名思义,就是某个对象最基础的属性和方法都保存在原型里面,这个和OOP的类有点像,不过JavaScript的原型是可以动态改变的

林西县18013407997: Javascript中构造函数和原型对象的区别(转 -
夹璧乳酸: 首先,我们知道,构造函数是生成对象的模板,一个构造函数可以生成多个对象,每个对象都有相同的结构.构造函数的缺点就是,每当你实例化两个对象时,需要调用两次构造函数的某一个方法,这带来的坏处就是占用内存,而且没必要....

林西县18013407997: JavaScript中什么是原型对象,个人表示不理解.回答者请附加相关代码.谢谢 -
夹璧乳酸: 这个问题认真看下js的学习教程,或者多百度一下就可以了.不过既然提问了,遇到了便是缘分,我说下我的理解吧. 原型对象,即说明是对象. js中的每个方法(普通方法)都有自己对应的原型对象. 比如 var a = function() {}; console.log(a.prototype);你可以说这个prototype就是原型对象.这个对象的作用是如果你像下边这样var obj = new a;那么这个new的操作就会将它的原型对象中的属性一并赋值给这个obj对象.所以,如果你采用下边的写法: a.prototype.foo = function(){};obj就会有一个新的方法(属性).更详细的可以看下原型链.

林西县18013407997: 面试问js原型怎么理解 -
夹璧乳酸: 一、基于原型链的继承1.继承属性 JavaScript 对象是动态的属性“包”(指其自己的属性).JavaScript 对象有一个指向一个原型对象的链.当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原...

林西县18013407997: 深入分析JS原型链以及为什么不能在原型链上使 -
夹璧乳酸: 在刚刚接触JS原型链的时候都会接触到一个熟悉的名词:prototype;如果你曾经深入过prototype,你会接触到另一个名词:__proto__(注意:两边各有两条下划线,不是一条).以下将会围绕prototype和__proto__这两个名词解释为什么不能...

林西县18013407997: JavaScript中继承应该怎么实现 -
夹璧乳酸: 1.原型链<br><br>基本思想:利用原型让一个引用类型继承另外一个引用类型的属性和方法.<br><br>构造函数,原型,实例之间的关系:每个构造函数都有一个原型对象,原型对象包含一个指向构造函数的指针,而实例都包含一个指向原型对...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网