es6类的静态使用--数组的实例方法和静态方法

--------类的静态使用---------

  • 静态属性 不会根据实例化对象的属性改变而改变
  • 静态方法不是针对实例对象来使用的,这个方法中this是Box类,因此我们通常不在静态方法使用this,直接使用类名
  • 静态方法中是无法调用实例方法的,独立于其他实例对象的方法,为了解决某一类问题的方法
	class Box{
	    static a1=1;//静态属性 不会根据实例化对象的属性改变而改变
	    a=10;
	    constructor(_a){
	        this.a=_a;
	        console.log(this.a)//42 这里的 a是实例化修改的
	    }
	    //静态方法,静态方法不是针对实例对象来使用的,
	    //这个方法中this是Box类,因此我们通常不在静态方法使用this,直接使用类名
	    static play1(){
	    console.log("aa");
		}
		play(){
		console.log('bb');
		}
	}

	let b=new Box(42);
	b.play();//'bb' 
	console.log(Box.a1);//静态属性也只能用类名获取
	Box.play1();// 'aa'   调用静态方法,只能用类名调用

上述代码中:b的对象中没有a1属性和play1方法的
a1属性和play1方法是类的属性和类的方法,不是实例对象的的方法,因此调用得用类名调用

数组中的静态方法和实例方法

 class Array{
     constructor(){
		//实例方法
     }
     push(){
		//实例方法
     }
     pop(){
		//实例方法
     }
     shift(){
		//实例方法
     }
     unshift(){
		//实例方法
     }
     slice(){
		//实例方法
     }
     splice(){
		//实例方法
     }
     static from(){
		//静态方法
     }
     static isArray(){
		//静态方法
     }
 }
 var arr=[1,2,3,4];
 arr.pop();//pop()是实例方法
 
 Array.from()//from()是静态方法,因此调用的时候得用类名调用
 Array.isArray(arr)//isArray()是静态方法,因此调用的时候得用类名调用

你可能感兴趣的:(es6)