美文网首页
构造函数的深入理解(包含原型对象的初步认知)

构造函数的深入理解(包含原型对象的初步认知)

作者: 查理斯_Chalis | 来源:发表于2018-12-04 20:28 被阅读0次
function Demo (name){
      console.log(this);//此时this指向一个空的狭义对象
      this.hobby();
      //这个this指向实例(实例其实就是new Demo的返回值),只是当前的实例(狭义对象)里没有属性,因为程序从上往下执行,属性没上树。实例可以通过__proto__属性访问到Demo.prototype里的方法
      this.name=name;//动态往当前狭义对象里添加一个name属性,属性值是形参name

      this.num=123;//动态往当前对象里添加一个num属性,属性值123;

      this.height=function (){//动态添加一个方法
         console.log("我身高一米八")
      }
      this.hobby();
      console.log(this);//这个this指向当前的狭义对象,里面有两个属性一个方法
  }
  console.log(Demo.prototype)//此时构造函数还没调用,Demo.prototype是一个空的狭义对象
                             //任何函数不管调不调用,都有prototype属性
  // console.log(Demo.prototype)
  Demo.prototype.hobby=function (){//此时构造函数还没调用,往Demo.prototype(原型对象)里添加一个方法共享
    console.log("我的爱好是打篮球")
  } 

 var people1=new Demo;//这里是入口函数,当new Demo执行的时候,生成一个实例,并且构造函数执行
 var people2=new Demo;
 console.log(people1.height===people2.height)//因为每一个实例的属性都是不同的()所以height也不同  
 console.log(people1.hobby===people2.hobby)//两个实例的访问地址是一样的所以相等

总结:
在new执行的时候(也就是开始实例化的时候)在构造函数内部生成了一个空的狭义对象(实例对象),new作为返回值赋值给变量的时候,返回值默认为这个狭义对象,而实例化对象可以通过proto访问到原型对象里的方法,即使是一开始为空的狭义对象,它也是一个实例,所以仍然可以访问原型对象,这也解释了为什么可以再构造函数身体中调用实例方法,换句话说,实例在new的一瞬间就生成了,为一个狭义对象。

相关文章

  • 构造函数的深入理解(包含原型对象的初步认知)

    总结:在new执行的时候(也就是开始实例化的时候)在构造函数内部生成了一个空的狭义对象(实例对象),new作为返回...

  • 原型链

    构造函数、原型、实例的关系 通过构造函数创建实例 每个构造函数都有一个原型对象 原型对象到包含一个指向构造函数的指...

  • 构造函数和原型、原型链

    每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。 构造...

  • 理解js中是原型链? 如何实现继承?

    怎么理解js中是原型链? 如何实现继承? 1.每个构造函数都有一个原型对象 2.每个原型对象都包含一个指向构造函数...

  • 原型与原型链

    原型 每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。...

  • JavaScript---原型

    学习目标 使用 prototype 原型对象解决构造函数的问题 理解什么是原型(原型对象) 构造函数、protot...

  • 原型与原型链的理解

    深入理解原型 构造函数 创建一个函数,当我们new这个函数,哪个这个过程就叫做构造函数通过构造函数创建对象也称为实...

  • javascript中面向对象编程-创建对象之原型模式

    理解名词:对象 原型对象 原型属性 函数 构造函数 实例 对象: Object,创建对象,对象属性方法原型对象:...

  • js原型和继承

    原型 一、原型的概念 执⾏构造函数代码时, js系统会给这个构造函数创建⼀个原型对象,构造函数中也包含⼀个prot...

  • 原型链

    简单回顾一下构造函数、原型和实例的关系:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例...

网友评论

      本文标题:构造函数的深入理解(包含原型对象的初步认知)

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