原型与原型链

1.原型:

  每当一个构造函数被创建的时候,系统就会自动的分配,一个对象,该对象的作用就是为了实现对象的共享方法。原型其实就是一个对象,存在内存中,原型可以给构造函数实列化(new)对象提供方法。

  访问对象的原型:

    构造函数.prototype(构造函数的原型)

    实例化对象.__proto__(实例化对象访问原型)

复制代码
 1         function Person(name,age,gender){
 2             this.name=name;
 3             this.age=age;
 4             this.gender=gender;
 5         }
 6 
 7         //构造函数原型中创建一个方法
 8         Person.prototype.sayHi=function(){
 9             console.log('hi~');
10         }
11 
12         var person = new Person('Tony',12,'boy');//实例化函数
13         console.log(person.sayHi);//调用方法
14 
15         var person1=new Person('Anny',12,'girl');
16         console.log(person1.sayHi);
17         //两个实例化后的对象指向同一个方法 
18         console.log(person.sayHi==person1.sayHi);//true
19         //构造函数的原型与实例化后的原型指向相同
20         console.log(Person.prototype===person.__proto__)//true
复制代码

两个原型对象的关系如图:

 

  

 

2.原型链

    在内存中,存在多个原型对象,都存在着链式关系

复制代码
        function Person(){}//创建构造函数

        let person=new Person();// 实例化对象

        console.log(Person.prototype==person.__proto__);//true
        console.log(Object.prototype.__proto__);//null
        //原型对象也是另一个构造函数通过new实例化得到的
        console.log(person.__proto__.__proto__);//object
        console.log(person.__proto__.__proto__.__proto__);//null
        var obj=new Object();
        console.log(obj);
复制代码

该关系如图所示:

 

posted @   hollow~  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示