构造函数--原型

使用构造函数构造对象时,我们可以将一些共有的属性或方法放在prototype中,从而达到节省内存的作用

  • new对象时发生了什么?
  1. 新建一个空对象
  2. 空对象.__proto__=构造函数.prototype
  3. this指向空对象
  4. 根据上下文绑带赋值,将对象属性都放入空对象中
  5. return这个对象
  • 一般用法举例
  function Person(name){
      this.name=name
      this.age=18
    }
    var nicoz=new Person('nicoz')
    Person.prototype.sayHi=function(){
      console.log('Hi~')
    }
    console.log(nicoz)
    nicoz.sayHi()

 注意点1:构造函数如果返回的不是对象,会忽略掉return的东西,而返回默认返回的对象

  function Person(name){
      this.name=name
      this.age=18
      return name
    }
    var nicoz=new Person('nicoz')
    console.log(nicoz)

 注意点2:构造函数如果返回了其他对象,那么此时返回对象.__proto__不再等于构造函数.prototype,此时再去调用prototype上的方法会报错

  function Person(name){
      this.name=name
      this.age=18
      return {name:name}
    }
    var nicoz=new Person('nicoz')
    console.log(nicoz)
    Person.prototype.sayHi=function(){
      console.log('Hi~')
    }
    console.log(nicoz.__proto__==Person.prototype)
    nicoz.sayHi()

posted @ 2022-07-26 21:24  南无、  阅读(35)  评论(0)    收藏  举报