2022-05-20 [复习]原型对象的引出和理解

0.前言

构造函数和原型对象这块一直觉得没吃透,终于有时间好好从头梳理一番,算是温故知新.

1.对象具有唯一性
function Person() {
    this.say = function() {
        console.log("helloOBJ");
    }
}
var p1 = new Person;
var p2 = new Person;
console.log(p1 == p2); //false
console.log(p1.say == p2.say); //false

那么对象的方法也不相等,而方法在功能上是完全一样的,没必要各自占据不同的内存空间

2.原型对象可以解决构造函数多次创建而产生的大量同名函数的问题
prototype属性:访问构造函数的原型对象
console.log(Person.prototype);//Object
/*原型对象长这样:
	Object
		say: ƒ ()
		constructor: ƒ Person()
		[[Prototype]]: Object
 Person.prototype可以看看原型对象上被写了哪些属性和方法
*/
原型对象本质上也是对象,可以添加方法,可让所有构造函数的实例化对象使用,达到节约内存的目的
3.给原型对象添加方法,并让不同的实例对象去调用
        function Person() {

        }
        console.log(Person.prototype);
        Person.prototype.say = function() {//给原型对象添加say方法
            console.log("helloOBJ");
        }
        var p1 = new Person;
        var p2 = new Person;
        p1.say();//helloOBJ
        p2.say();//helloOBJ

发现都能调用say方法
*原型对象可以通俗理解为构造函数Person的"父类",给其添加了方法,那么"子类"Person的所有实例化对象就继承了这个方法

4.构造函数,原型对象,实例化对象之间的关系和一些概念的理解(重点)
概念解释
构造函数上例中的Person(特征:首字母大写)
prototype构造函数的一个属性,通过它可以访问原型对象的方法或属性
原型对象如无形的"父类",它被添加了什么方法或属性,那么其"子类"(Peoson)的所有实例化对象都可以调用
实例化对象上例中的p1和p2,是通过构造函数new出来的
Person.prototype.say()向Person的原型对象添加say方法
p1.say()Person的实例化对象p1调用原型对象上的say方法
5.图示

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端OnTheRun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值