美文网首页
构造函数、实例、原型对象三者的关系,整理一下

构造函数、实例、原型对象三者的关系,整理一下

作者: 小汤猿 | 来源:发表于2022-11-27 00:19 被阅读0次
    一、构造函数、实例、原型对象三者之间的关系
      function Person(o){
        this.name=o.name;
        this.age=o.age;
        this.sex=o.sex;
        this.init();
    }
    Person.prototype.init = function(){
      console.log("构造函数执行");
    }
    Person.prototype.say = function(){
      console.log("你好" + this.name);
    }
    var p=new Person({
        name:"Tom",
        age: 10,
        sex:"男"
    });
    p.say();   
    
    console.log(1,Person)
    console.log(2,Person.prototype)
    console.log(3,Person.prototype.constructor)
    console.log(4,p)
    console.log(5,p.__proto__);
    console.log(6,p.__proto__.constructor)
    
    
    Person.png

    从打印内容可以看出

    Person = Person.prototype.constructor = p.__proto__.constructor
    Person.prototype === p.__proto__
    
    console.log(7,Person === Person.prototype.constructor);  // true
    console.log(8,Person === p.__proto__.constructor);  // true 
    console.log(9,Person.prototype === p.__proto__)  // true
    

    它们之间的关系图如下


    构造函数关系图.png
    二、原型链
    原型.png

    有了上面的关系图,我们下来看下这道题,看看输出什么

    function Foo(){
        Foo.a = function(){
            console.log(11);
        }
        this.a = function(){
            console.log(12);
        }
    }
    
    Foo.prototype.a = function(){
        console.log(13);
    }
    Foo.a = function(){
        console.log(14);
    }
    
    Foo.a();
    let obj = new Foo();
    obj.a();
    Foo.a();  
    如果希望上面打印全都输出,应如何修改代码?欢迎留言评论。
    

    相关文章

      网友评论

          本文标题:构造函数、实例、原型对象三者的关系,整理一下

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