【一】对象和类

文章介绍了JavaScript中的对象概念,强调所有事物都是对象,包括字符串、数值等。ES6引入了类的概念,通过`class`关键字声明。类包含构造函数和方法,方法不需`function`关键字。创建对象使用`new`关键字。类的继承通过`extends`实现,子类需在构造函数中使用`super`调用父类构造器。`this`在构造函数中指向实例,在方法中指向调用者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在javascript中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等

在ES6中新增加了类的概念,可是使用class关键字来声明一个类

创建类:

Class Star {
    //class body
    constructor(usename){
        //构造器函数,和java中类似用于初始化一个类,一个类中默认有一个constructor函数,在创建对象的时候自动调用
        this.usename=usename
    }
    eat(){
        console.log(this.usename+"在吃饭!")
    }
}

需要注意的是javascript初始化属性与java不同,前者是使用this来指向对象属性进行赋值,在类中不用写这个属性,而后者也是使用this或不使用,但是类中要写这个属性

类中的函数是不用写function关键字来进行修饰的

多个函数之间不需要使用逗号进行分割

创建对象:

const star=new Star('张三')

类的继承

javascript的类的继承于java中的类的继承十分相似,都是通过extends关键字进行一个继承

我们先来看看java的继承:

package tets;
​
public class parent {
    String name="";
    int age=0;
​
    public parent(String name, int age) {
        this.name = name;
        this.age = age;
    }
​
    public void say(){
        System.out.println("我是"+name+",今年"+age+"岁。");
    }
}
​
package tets;
​
public class Child extends parent{
    public Child(String name, int age) {
        super(name, age);
    }
}
 

可以看到父类若是有参构造子类的构造方法中就得使用super关键字(IDEA智能,书写时若不写会报错)

js也是如此,如果子类要使用继承父类的某个方法,而且要使用父类的数据时就需要在构造函数中使用super关键字,例子如下:

class Father {
    constructor(x,y){
        this.x=x;
        this.y=y
    }
    sum(){
        console.log(this.x+this.y)
    }
}
class Son extends Father {
    constructor(x,y){
        //super(x,y)
        this.x=x;
        this.y=y
    }
}
var son=new Son(1,2);
son.sum();      //把上面super(x,y)注解,将会报错,因为Son的构造方法中的x,y赋值给的是Son对象中的x,y属性,而父类的sum方法调用的是父类的x,y属性,此时父类没有构造,没有初始化,也就没有x,y属性,进行this.x和this.y时就会出现属性未定义的错误

与java一样super关键字是指向父类的引用super()是调用父类的构造器,而super. 可以去访问父类的普通函数,但是这里注意的是super关键字不能够访问属性

还有一点与java一样spuer()调用父类的构造方法只能在子类构造方法的第一行进行调用(this之前)

ES6中的类没有变量提升(如var),所以必须先定义类,才能通过类实例化对象

类里面的公有属性和方法一定要加this使用

this的指向:

在构造函数constructor中的this指向是当前类的实例化对象,而普通方法的this指向的是它的调用者,谁调用这个方法,这个方法中的this就指向谁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值