0
点赞
收藏
分享

微信扫一扫

Vue学习笔记之Vue的面向对象


0x00 准备工作

JavaScript 语言中,生成实例对象的传统方法是通过构造函数。

Vue学习笔记之Vue的面向对象_构造函数

function Animal(name,age){
this.name = name;
this.age = age;

}
Animal.prototype.showName = function(){
console.log(this.name);
console.log(this.age);
}

var a = new Animal('小黄',5);
a.showName();

Vue学习笔记之Vue的面向对象_Vue面向对象_02

上面这种写法跟传统的面向对象语言(比如 C++ 和 Java)差异很大,很容易让新学习这门语言的程序员感到困惑。

ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过​​class​​关键字,可以定义类。

基本上,ES6 的​​class​​​可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的​​class​​​写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。上面的代码用 ES6 的​​class​​改写,就是下面这样

Vue学习笔记之Vue的面向对象_构造函数_03

class Animal{

// 构造器 当你创建实例之后 constructor()方法会立刻调用 通常这个方法初始化对象的属性
constructor(name,age){
this.name = name;
this.age = age;
}
showName(){
console.log(this.name);
}
}
var a2 = new Animal('点点',3);

Vue学习笔记之Vue的面向对象_构造方法_04

上面代码定义了一个“类”,可以看到里面有一个​​constructor​​​方法,这就是构造方法,而​​this​​关键字则代表实例对象。也就是说,ES5 的构造函数Animal,对应 ES6 的Animal类的构造方法。

Animal类除了构造方法,还定义了一个showName方法。注意,定义“类”的方法的时候,前面不需要加上​​function​​这个关键字,直接把函数定义放进去了就可以了。另外,方法之间不需要逗号分隔,加了会报错。

ES6 的类,完全可以看作构造函数的另一种写法。

console.log(Animal2===Animal2.prototype.constructor);//true

上面代码表示,类本身就指向了类的构造函数。

使用的时候,也是直接对类使用​​new​​命令,跟构造函数的用法完全一致。


0x01 Constructor方法

​constructor​​​方法是类的默认方法,通过​​new​​​命令生成对象实例时,自动调用该方法。一个类必须有​​constructor​​​方法,如果没有显式定义,一个空的​​constructor​​方法会被默认添加。

Vue学习笔记之Vue的面向对象_构造方法_05

class Animal {
}

// 等同于
class Animal {
constructor() {}
}

Vue学习笔记之Vue的面向对象_构造函数_06

上面代码中,定义了一个空的类​​Point​​​,JavaScript 引擎会自动为它添加一个空的​​constructor​​方法。





举报

相关推荐

0 条评论