首先说一下老版本的面向对象是什么样子的
主要是构造函数和继承是什么样的
1.类和构造函数一样
2.属性和方法分开写的
老版本构造函数
// 创建类(构造函数)
function User(name) {
this.name = name
}
// prototype的运用,创建方法
User.prototype.showName = function () {
console.log(this.name)
}
// 创建实例
var u1 = new User('able')
// 调用方法
u1.showName()
老版本继承
function VipUser(name, level) {
// 继承父类的name属性(?不清楚是不是叫属性--可能是叫做参数)
User.call(this, name)
// 添加自己的属性(?)
this.level = level
}
VipUser.prototype = new User()
VipUser.prototype.constructor = VipUser
// 给新增加的属性(?)添加方法
VipUser.prototype.showLevel = function () {
console.log(this.level)
}
// 创建实例
var v1 = new VipUser('blue', 3)
// 调用方法
v1.showName()
v1.showLevel()
新版面向对象
1.有了 class 关键字、构造器
2.class 里面直接加方法 继承,
3.super 超类==父类
新版本构造函数
//有了 class 关键字
class User {
// 有了构造器
constructor(name) {
this.name = name
}
// 方法
showName() {
console.log(this.name)
}
}
// 创建实例
var u1 = new User('able2')
// 调用方法
u1.showName()
新版本继承
// 类
class VipUser extends User {
// 构造器
constructor(name,level) {
super(name)
this.level = level
}
// 方法
showLevel(){
console.log(this.level)
}
}
// 创建实例
v1 = new VipUser('blue', 3)
// 调用方法
v1.showLevel()
不懂得地方还是有,照葫芦画瓢不是很行,还得看看java面向对象和继承是怎么回事。
不过最最主要的还是理解原理。一通百通。