美文网首页
用new关键字生成实例时做了什么

用new关键字生成实例时做了什么

作者: 黄黄黄大帅 | 来源:发表于2020-10-12 21:42 被阅读0次
    // 定义构造函数
    function Person (name, age) {
        this.name = name
        this.age = age
    
        this.say = function () {
            console.log(`my name is ${this.name}, my age is ${this.age}`)
        }
    }
    
    // 构造函数的原型属性和方法定义
    Person.prototype.color = 'yellow'
    Person.prototype.sayBye = function () {
        console.log('Bye!')
    }
    
    // 实例化
    let p = new Person('胡小帅', 18)
    console.log(p)
    
    伪代码

    1.初始化新对象

    let obj={}
    

    2.原型的执行,确定实例对象的构造函数

    obj.__proto__=Person.prototype
    

    3.绑定this指向对象为obj,传入参数,执行Person构造函数,进行属性和方法的赋值操作

     Person.call(obj, '胡小帅', 18)
    

    //比如我们创建了一个函数:
    function Base(){
    console.log(this);
    }
    //如果我们不用new关键字,而是直接执行Base();那么这里的this将会是window:
    Base();//window
    //但是如果我们用了new关键字,this就会变成了Base本身;
    new Base();//Base

    4.返回该对象

    相关文章

      网友评论

          本文标题:用new关键字生成实例时做了什么

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