目录
一、类的创建
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)---->构造函数