js中的原型prototype

什么是原型呢?

首先我们来看一个构造函数

    function X(name,sex){
            this.name=name;
            this.sex=sex;
            this.sing=function(){
                console.log("我在唱歌");
            }
        }
        var l=new X("小熊","男");
        var z=new X("小明","男");
        console.log(l);
        console.log(z);

一个构造函数,我们实例化了2个对象,开辟了2个内存空间
在这里插入图片描述
那如果有几十个对象呢,那不得有几十个内存空间,
这样就会存在浪费内存的问题。
那有什么方法能够解决这个问题?所以,就出现了原型

我们可以把那些不变的方法,直接定义在prototype原型对象上,这样所有对象的实例就可以共享这些方法。调用这些方法直接访问prototype原型对象就行

说了这么多?那原型到底是什么呢?原型的作用是什么呢?

  • 每一个构造函数都有一个 prototype 属性,指向另一个对象。这个 prototype 就是一个对象,这个对象的所有属性和方法,都会被构造函数所拥有。
  • 原型简单来说就是一个对象
  • 原型的作用就是共享方法,资源共享
    function X(name,sex){
            this.name=name;
            this.sex=sex;
            this.sing=function(){
                console.log("我在唱歌");
            }
        }
        console.log(X);

在这里插入图片描述
输出这个构造函数你可以发现有原型对象(prototype)

    //     //构造函数存在浪费内存的问题
     function X(name,sex){
            this.name=name;
            this.sex=sex;
            // this.sing=function(){
            //     console.log("我在唱歌");
            // }
        }
        X.prototype.sing=function(){
            console.log("我在唱歌");
        }
        var l=new X("小熊","男");
        var z=new X("小明","男");
        l.sing();
        z.sing();
      
       console.log(l.sing === z.sing);
    

在这里插入图片描述
在这里插入图片描述

输出我在唱歌输出了2次,是true,所以,表明原型对象可以共享方法

一般情况下,我们的公共属性定义到构造函数里面,公共的方法我们放到原型对象身上

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值