原型对象

本文深入探讨JavaScript中的原型对象,包括原型prototype、proto属性、原型链和constructor。原型对象的作用是实现对象间的属性和方法共享,通过原型链实现继承。每个函数都有prototype属性,指向原型对象,而实例的__proto__属性指向构造函数的prototype。constructor属性保存了对构造函数的引用,原型对象也是Object构造函数的实例,构成了原型链。
摘要由CSDN通过智能技术生成

原型对象

一:原型 prototype

1.定义

每一个函数身上都有一个prototype(原型),由于这个prototype的值是一个对象类型,因而又叫做原型对象,ptototype属性是函数独有的属性!

2.原型的作用

原型对象的作用通常用来共享父类的方法,由于方法是函数,本质上也是一个对象,而对象的内存地址保存在堆空间里,如同工厂模式一般,多个内存空间存放相同的代码,会造成大量空间被占用,因而将公有的方法添加在父类的prototype上,也就是写入了同一对象上,调用的时候也就避免了多个空间存放同一代码的错误示范,而由于父类的属性的值是基本类型,所占内存较少,所以我们往往将其添加到父类函数体的内部。
我们创建的每一个函数,解析器都会像函数中添加一个属性 prototype ,无论构造函数还是普通函数
二:proto

与函数的prototype属性不同,每一个obj的对象都有一个__ptoto__属性,这个__proto__属性隐式的指向了这个子类的的构造函数的prototype属性!但是这个__proto__属性是不可见的,这也就是为什么将其称作是隐式的,不过好在浏览器的支持下,它被定义为__proto__

如果看到这里,希望你再好好思考一下 ”万物皆对象“这句话的含义

从父类的角度看,子类的_proto_属性隐式指向了它的父类的prototype对象;从子类的角度看,子类自身的__proto__属性指向了它的父类的prototype属性

构造函数的prototype属性指向的 与 实例化对象的__proto__属性指向的 是同一个对象,也就是父类的prototype对象!

prototype
这个属性对应一个原型对象,这个对象就是我们所谓的原型对象
在这里插入图片描述
如果函数作为普通函数调用,则此属性没有任何作用
当函数作为构造函数的形式调用时,他所创建的对象中都会有一个隐含的属性,指向该构造函数的原型对象,我们可以通过_proto_来访问该属性

function Person() {
   }
      var per = new Person();
    console.log( typeof Person.prototype);object
      console.log(typeof per.__proto__)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值