面向对象(三)构造函数注意事项

构造函数注意事项

  • 01函数传值
  • 02对象的类型(判断)
  • 03构造器属性(获取)
  • 04函数调用
  • 05this

构造函数创建对象存在的问题

  • 每创建一个对象,内部都会声明一个showName函数

01函数传值普通版


01函数传值升级版



02 对象的类型(判断)

关键字 instanceOf
用来判断当前对象是否是某个类型的实例(检查某个对象是否是使用指定构造函数创建的)
语法: 对象 instanceOf 构造函数(类型)



03 构造器属性(获取)



04 函数调用

new :创建对象,并在最后返回该对象
构造函数:用于初始化对象
可以以普通函数的方式来调用构造函数(这是一个错误的演示,不要这样写代码)


以上代码存在的问题

01 用调用普通函数的方式调用构造函数(没有报错)
02 打印p2,得到的是undefined
03 通过打印this,可以知道,用调用普通函数的方式调用构造函数,this属于window

为了解决以上代码存在的问题,需在构造函数中多加一层判断,如下



05 this

以普通函数的方式来调用构造函数,那么内部的this指向的是window,代码同上



构造函数创建对象存在的问题

  • 每创建一个对象,内部都会声明一个showName函数

  • 在内存中的结构图


    面向对象(三)构造函数注意事项_第1张图片
    每创建一个对象,内部都会声明一个showName函数
  • 优化方案(也存在问题)
    问题:
    01 把函数写在外部,破坏了封装性。
    02 增加一个全局变量。


  • 在内存中的结构图


    面向对象(三)构造函数注意事项_第2张图片
    构造函数优化

终极版:原型解决构造函数创建对象的问题


你可能感兴趣的:(面向对象(三)构造函数注意事项)