11-javaScript-面向对象

文章配套视频

  • https://study.163.com/course/introduction/1005973001.htm

JavaScript中常见的对象

  1. 工厂模式
new Object()
  new后面调用函数,我们称为构造函数。
  Object() 我们把它视为一个构造函数,构造函数的本质就是一个函数,
  只不过构造函数的目的是为了创建新对象,为新对象进行初始化(设置对象的属性)

使用工厂方法创建对象
  通过该方法可以大批量的创建对象
  使用工厂方法创建的对象,使用的构造函数都是Object
  所以创建的对象都是Object这个类型,就导致我们无法区分出多种不同类型的对象
  1. 构造函数
定义
    构造函数就是一个普通的函数,创建方式和普通函数没有区别,  不同的是构造函数习惯上首字母大写
    构造函数和普通函数的区别就是调用方式的不同,
    普通函数是直接调用,而构造函数需要使用new关键字来调用

执行流程
    1. 立刻创建一个新的对象
    2. 将新建的对象设置为函数中this, 在构造函数中可以使用this来引用新建的对象
    3. 逐行执行函数中的代码
    4. 将新建的对象作为返回值返回
  1. this
定义
  解析器在调用函数每次都会向函数内部传递进一个隐含的参数, 
  这个隐含的参数就是this,this指向的是一个对象 , 这个对象我们称为函数执行的上下文对象
  根据函数的调用方式的不同,this会指向不同的对象
    1.以函数的形式调用时,this永远都是window
    2.以方法的形式调用时,this就是调用方法的那个对象
    3.当以构造函数的形式调用时,this就是新创建的那个对象

谁调用this就是谁
    function test() {
     console.log(this);
     }
     test();  //window.test();
  //上面的this是window,实际是window调用test()
     p1.sayHi(); 
  //sayHi()中的this,是p1,此时是p1调用sayHi()
    构造函数中的this,始终是new的当前对象
  1. 构造器(constructor) 和 原型属性 (prototype)
在任何一个对象中都有构造器和原型属性,包括原生的对象,比如: Date, Array等
constructor 返回创建此对象的构造函数
prototype 让我们有能力动态给对象添加属性和方法
  1. 其他语言中面向对象
Java
    class Customer {
    //属性
    public String Name;
    public String Age;
    public String Money;
    //方法
    public void Buy (String id,int num,double price) {
        self.money -= num * price;
        //记录订单
    }
}

    Customer  c1 = new  Customer();
    //属性
    c1.Name = "张三";
    c1.Age = 18;
    c1.Money = 1000000;
    //方法
    c1.Buy("a001",1,500);
  1. 包装类
定义
  在JS中为我们提供了三个包装类,通过这三个包装类可以将基本数据类型的数据转换为对象
String()
  可以将基本数据类型字符串转换为String对象
Number()
  可以将基本数据类型的数字转换为Number对象
Boolean()
  可以将基本数据类型的布尔值转换为Boolean对象

注意:在实际应用中不会使用基本数据类型的对象

你可能感兴趣的:(11-javaScript-面向对象)