美文网首页
js原型,原型链

js原型,原型链

作者: TianTongBo | 来源:发表于2019-07-25 18:27 被阅读0次

    一张图,一份代码,理解原型链

    微信图片_20200919160654.png
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
    
    
    
    
    <script>
       
       //构造函数写属性,原型对象写方法
       function Animal(name,age) {
           this.name=name||'小花';
           this.age=age||14;
       }
       Animal.prototype.say=function() {
               console.log(this.name+'它今年'+this.age+'岁了');   
       }
       let [name,age]=['小狗',5];
       var  dog=new Animal(...[name,age]);
       var  cat=new  Animal('小猫',4)
       
       dog.say(); //小狗它今年5岁了
       cat.say(); //小猫它今年4岁了
       
       //实例化对象的原型指向该构造函数的原型对象
       console.log(dog.__proto__===Animal.prototype); //  true
       
       //构造函数的原型对象内部有一个constructor指针,指向构造函数本身
       console.log(Animal.prototype.constructor===Animal); //  true
       
       
       //Function是由function关键字定义的函数对象的原型
    
       console.log(Animal.__proto__===Function.prototype);  // true
       
        //Function也是一个构造函数 -->构造函数的原型对象内部有一个constructor指针,指向构造函数本身
       console.log(Function.prototype.constructor===Function) //true
       
      
         console.log(Function.prototype.__proto__===Object.prototype)  //true
         console.log(Animal.prototype.__proto__===Object.prototype)    //true
        
        
         console.log(Object.prototype.__proto__)//null
         console.log(Object.__proto__===Function.prototype)  //true
       
     
         console.log(Animal.prototype==Function.prototype) //false
         console.log(Animal.__proto__===Object.__proto__) //true
     
    </script>
        
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:js原型,原型链

          本文链接:https://www.haomeiwen.com/subject/ycmcrctx.html