类的创建、原型对象、原型链、继承

本文详细介绍了JavaScript中类的创建,包括ES5和ES6的不同方式,以及原型对象的概念,如构造函数的原型对象、对象的原型对象及其访问方式。文章探讨了原型链的结构特点,包括构造函数、原型对象、实例对象之间的关系,并讲解了this指针的指向以及如何改变它的指向。此外,还讨论了bind方法、错误处理机制和JavaScript的继承方式,包括ES6和ES5的继承差异及解决原型链问题的方法。最后,阐述了类的实例化过程。
摘要由CSDN通过智能技术生成

目录

一、类的创建

1、在ES5中创建

2、在ES6中创建

二、原型对象

1、构造函数(类)的原型对象

2、对象的原型对象

3、访问对象的构造方法

4、原型对象的原型对象

三、原型链的结构特点

1、构造函数和原型对象

2、实例对象和原型对象

3、Object对象的__proto__属性是null

四、this指针的指向

五、更改this指针的指向

1、apply()方法

2、call()方法

3、两个方法的区别

六、bind()方法

七、JavaScript代码的错误处理

1、try

2、throw抛出错误对象

3、常见的错误类型 

八、继承

1、ES6的继承

2、ES5的继承

4、在继承过程中确定原型对象和实例对象之间关系的方法

5、原型链的问题

6、原型链问题的解决方法

(1)ES6中实现

(2)在ES5中实现

 九、类的实例化


一、类的创建

1、在ES5中创建

构造函数名就是类名

 2、在ES6中创建

(1)类的创建

 (2)类表达式

二、原型对象

1、构造函数(类)的原型对象

通过prototype属性访问

class Student{
    constructor(school,name,sex){
        Student.school = school
        this.name = name
        this.sex = sex
    }
    display = function(){
        let str = '学校:'+Student.school +'\n姓名:'+this.name+'\n性别:'+this.sex
        console.log(str)
    }
    static sayHello(){  //静态成员方法使用static关键字进行定义
        console.log('Hello'+Student.school)
    }
}

console.log('构造方法的原型对象:',Student.prototype)

 2、对象的原型对象

通过对象的__proto__属性访问(__两个下划线)

class Student{
    constructor(school,name,sex){
        Student.school = school
        this.name = name
        this.sex = sex
    }
    display = function(){
        let str = '学校:'+Student.school +'\n姓名:'+this.name+'\n性别:'+this.sex
        console.log(str)
    }
    static sayHello(){  //静态成员方法使用static关键字进行定义
        console.log('Hello'+Student.school)
    }
}

var s1 = new Student('西安交通大学','周瑜','男')

console.log('对象的原型对象:',s1.__proto__)

 3、访问对象的构造方法

访问对象的构造方法:在原型对象里面有一个constructor属性,指向对象的构造方法

(1)构造方法名 prototype constructor

(2)对象名 constructor

function Person(){}

console.log(Person.prototype.constructor)  //输出:[Function: Person]
var p1 = new Person()
console.log(p1.constructor)   //输出:[Function: Person]

 4、原型对象的原型对象

原型对象的原型对象:原型对象本身也是一个对象,所以它也有一个原型对象

(1)获取原型对象的原型对象: 构造方法名.prototype.__proto

(2)原型对象的原型对象构造方法: 构造方法名.prototype.__proto.constructor

function Student(){}
//输出原型对象的原型对象
console.log(Student.prototype.__proto__)   //输出为:[Object: null prototype] {}

//输出原型对象的原型对象的构造方法
console.log(Student.prototype.__proto__.constructor)   //输出为:[Function: Object]

强调:A、JavaScript中的所有类都直接或间接的继承自Object;B、所有的对象都是通过构造方法生成的

三、原型链的结构特点

1、构造函数和原型对象

构造函数 ----(prototype)---->原型对象

原型对象 ----(constructor)---->构造函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值