简单了解:对象、构造函数、 new

  • 构造函数是什么?
    答:用于生成对象的函数。

  • 对象不是直接声明即可吗?为什么还要用构造函数生成对象,如var obj = {},生成一个空对象。
    答:这是简写,var obj = {} 等价 var obj = new Object(),本质上也是用构造函数生成的。

  • 那对象是什么?
    答:对象就是客观(真实世界)存在的人、事、物体等实体在计算机逻辑(虚拟世界)中的映射。

  • 对象有什么用?
    答:封装属性(property)和方法(method)。

  • 构造函数生成的对象与普通声明的对象有什么不同?
    答:本质上没有,都是对象。根据需求生成构造函数模板,该模板具有属性与方法,再通过该模板生成对象,所以这些对象具有 共同 的属性与方法,而普通生成的对象,也可自由封装属性与方法,若与构造函数生成相比,可简单理解为批量制造与单体制造。

    呃,还有一点较为关键的是 :
    构造函数生成的对象的__proto__指向构造函数的prototype,而普通声明的对象的 __proto__指向 Object 的prototype

  • 构造函数和普通函数有区别吗?
    答:本质上没有,都是函数,但作为区分,构造函数名字的第一个字母通常大写,其次是构造函数的使用有以下特点:
    1.函数体内部使用了this关键字,代表了所要生成的对象实例。
    2.生成对象的时候,必须使用new命令。

  function Pokemon(name){          // var Pokemon = function (name) { }
    this.name = name
  }

  var pikachu = new Pokemon('pikachu')


  • 为什么一定要使用newnew的作用是什么?
    答:  1.创建一个空对象,作为将要返回的对象实例。
             2.将这个空对象的原型,指向构造函数的prototype属性。
             3.将这个空对象赋值给函数内部的this关键字。
             4.开始执行构造函数内部的代码。

  • 不添加new会怎样?
    答:不添加new,在使用该函数时,无法将this指向一个空对象,此时this便指向window,函数内部构造的对象属性变量就成为全局变量,构造函数失败。没有newthis就不是构造函数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容