zoukankan      html  css  js  c++  java
  • class基本使用

    console.log(`
    1.创建一个空对象
    2.让this 指向刚刚创建好的空对象
    3.执行构造函数内的代码 (为相关的属性和方法赋值)
    4.返回创建好的对象`)
    // 1.创建一个空对象
    // 2.让this 指向刚刚创建好的空对象
    // 3.执行构造函数内的代码 (为相关的属性和方法赋值)
    // 4.返回创建好的对象
    // new 一个对象的过程 就是实例 
    function Person(name,age){
        this.name = name
        this.age = age
    }
    // info 属性,直接挂载给了构造函数,所以它是静态属性
    Person.info = 'aaaa'
    //实例方法
    Person.prototype.say = function(){
        console.log("这是Person的实例方法");
        
    }
    Person.show = function(){
        console.log("这是Person的静态show方法");
        
    }
    const p1 = new Person("许三多",18)
    console.log(p1)//实例属性
    console.log(Person.info);//静态属性
    //通过 new 出来的实例,访问到的属性,叫做[实例属性]
    //通过构造函数,直接访问到的属性,叫做[静态属性]
    console.log(p1.name);
    p1.say();//实例方法
    Person.show();//静态方法
    
    console.log('=================class===================');
    // 
    // 实例成员:使用实例对象(实例)来调用的属性和方法(只能使用new创建出来的对象)
    // 静态成员:只能使用构造函数名进行 调用和 创建的 属性或者方法
    // class ----------------------------------------------------
    //创建一个动物类
    // 注意1:在 class 的 { } 区间内,只能写 构造器、静态方法和静态属性、实例方法
    // 注意2:class 关键字内部,还是用 原来的配方实现的;所以说,我们把 class 关键字,称作 语法糖;
    class Animal {
        //这是勒种的构造器
        //每个类中都有一个构造器如果程序员没有手动指定构造器,那么,可以认为类内部有一个隐形的构造器
        //类似如: constructor(){}
         // 构造器的作用,就是,每当 new 这个类的时候,必然会优先执行 构造器中的代码
        constructor(name,age){
            //实例属性
            this.name = name
            this.age = age 
        }
        // 在 class 内部,通过 static 修饰的属性,就是静态属性
        static info = "eeeee"
        static show(){
            console.log("这是动物的静态方法"); 
        }
        wow(){
            console.log("动物的实例方法");
        }
    }
    const a1 = new Animal("黄",3)
    console.log(a1);
    console.log(a1.name);//实例属性
    a1.wow();//实例方法
    console.log('====================================');
    console.log(Animal.info);//info 是Animal静态属性
    Animal.show();
    console.log('====================================');
     
    

      

    class Animal {
        constructor(name,age){
            //实例属性 因为这些通过this挂载的属性,都是通过new出来的实例访问的
            this.name = name
            this.age = age
        }
        //实例方法
        say(){
            console.log('实例say方法')
        }
    //--------------------------------------------------
    //如果要定义静态属性,则需要和constructor,并且这个属性需要被static关键字修饰
    //静态属性的定义:无法通过实例访问,只能通过类名的访问
        static info = {
            address:"上海",
            location:"宝山"
        } 
        static show(){
            console.log("静态的show方法")
        }  
    }
    const a1 = new Animal("小黄",2)
    console.log(a1)
    console.log(a1.name)//通过实例直接访问的实例属性
    a1.say()//通过 实例,直接访问实例方法  实例的挂载在__proto__
    console.log('====================================');
    console.log(Animal.info)//通过类名,直接访问静态属性
    Animal.show()//通过类名,直接访问静态方法
    // 实例的 属性 或 方法,都是 通过 new 出来的实例对象来访问的;
    // 静态的属性 或方法,都是 直接通过 类名 来访问的;(表现形式:通过 static 来修饰)
    

      

  • 相关阅读:
    codeforces 455B A Lot of Games(博弈,字典树)
    HDU 4825 Xor Sum(二进制的字典树,数组模拟)
    hdu 1800 Flying to the Mars(简单模拟,string,字符串)
    codeforces 425A Sereja and Swaps(模拟,vector,枚举区间)
    codeforces 425B Sereja and Table(状态压缩,也可以数组模拟)
    HDU 4148 Length of S(n)(字符串)
    codeforces 439D Devu and Partitioning of the Array(有深度的模拟)
    浅谈sass
    京东楼层案例思维逻辑分析
    浅谈localStorage和sessionStorage
  • 原文地址:https://www.cnblogs.com/tuziling/p/10746678.html
Copyright © 2011-2022 走看看