JavaScript中class类的三种方法详解(静态方法、普通方法与构造方法)

2 篇文章 0 订阅

在js的类中,可分为三种方法,constructor构造方法、静态方法与普通方法。

一、constructor构造方法

1.概念

类的作用在于构建对象,而constructor构造方法就是用于构建对象实例。

2.使用方法
  • 在使用new关键字生成对象时,constructor方法会被执行,最终return的结果就是生成的对象实例。
  • 当一个类没有constructor方法时会自动生成一个空的constructor方法,返回结果为空。
  • 用new关键字实例化对象时传入的参数会做为constructor构造函数的参数传入。
class Point {
    constructor(name) {
        console.log('Instantiate objects:'+ name);
    }
}

new Point('testObj');
//Instantiate objects:testObj

二、普通方法

1.概念

class类的普通方法可以看作是构造函数的另一种写法,相当于在类的prototype属性上边定义方法。

class Point {
    toString() {
        // ...
    }
}

//等同于
class Point {
}

Point.prototype={
    toString() {
        // ...
    }
}
2.使用方法
(1).该类实例化的对象上使用此方法
class Point {
    toString() {
        // ...
    }
}

let obj = new Point();
obj.toString();
(2).直接通过该类的prototype调用此方法
class Point {
    toString() {
        // ...
    }
}

Point.prototype.toString();
(3).通过子类的__proto__调用
class Foo {
  commonMethod() {
    return 'hello';
  }
}

class Bar extends Foo {
}

Bar.__proto__.prototype.commonMethod();

想要弄懂这个原理请先弄懂ES5中原型链、隐式原型链相关知识点。

三、静态方法

1.概念

类相当于实例的原型,所有在类中定义的方法,都会被实例继承。如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用(通过类调用指在该类之外调用),这就称为“静态方法”。

2.使用方法

静态方法只能在当前类上调用,不能被该类的实例对象调用。父类的静态方法可以被子类继承。

因此静态方法被调用的方式一共有三种(三种调用方式都在下面一段代码中使用到了,请耐心阅读):

  • 父类直接调用
  • 子类继承父类后调用
  • 子类通过super对象调用
class Foo {
  static classMethod() {
    return 'hello';
  }
}

Foo.classMethod();  //hello

class Bar extends Foo {
}

class Cla extends Foo {
    return super.classMethod(); //hello
}

Bar.classMethod();  //hello
对比静态方法普通方法构造方法
关键字staticconstructor
使用场景声明一个仅供当前类或当前类的子类使用的方法创建实例化对象可直接调用的方法在用new关键字通过此类实例化对象时执行的方法
使用对象当前类或当前类的子类通过该类或该类的子类实例化生成的对象该类自身
调用方法1.父类直接调用
2.子类继承父类后调用
3.子类通过super对象调用
1.通过该类及该类的子类实例生成的对象调用
2.该类通过prototype调用
3.该类的子类通过__proto__隐式原型链调用
1.该类实例化对象时调用
2.该类的子类使用super关键字调用
注:在class类中,它的静态属性与普通属性允许重名。但是不建议重名,这里就不给出demo了。

END

JavaScript有多种方法可以遍历数组,其常用的有map、forEach和filter。 1. map方法: map方法会对数组的每个元素调用一个回调函数,并返回一个新的数组,新数组的元素是原始数组每个元素经过回调函数处理后的结果。例如,我们有一个数组[1, 2, 3],我们可以使用map方法将每个元素乘以2并返回一个新的数组[2, 4, 6]。map方法不会改变原始数组。 2. forEach方法: forEach方法会对数组的每个元素调用一个回调函数,但它不会返回任何内容。通常,forEach方法用于执行一些操作而不需要返回结果,例如打印数组的每个元素。与map方法不同,forEach方法无法返回修改后的数组。 3. filter方法: filter方法会对数组的每个元素调用一个回调函数,并返回一个新的数组,新数组的元素是回调函数返回值为true的元素。例如,我们有一个数组[1, 2, 3, 4, 5],我们可以使用filter方法筛选出所有大于2的元素并返回一个新的数组[3, 4, 5]。与map方法似,filter方法也不会改变原始数组。 这三种方法在遍历数组时具有不同的用途。map方法可以用于对数组的每个元素进行转换或操作,并返回一个新的数组。forEach方法用于执行一些操作而不关心返回值。filter方法用于根据指定的条件筛选出符合条件的元素,并返回一个新的数组。根据具体情况,我们可以选择合适的方法来遍历数组。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值