这个系列的第一部分,主要介绍了如何”封装”数据和方法,以及如何从原型对象生成实例。
今天要介绍的是,对象之间的”继承”的五种方法。
比如,现在有一个”动物”对象的构造函数。
1 |
|
Javascript是一种基于对象的语言,所有东西几乎都是对象。但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类)。
那么,如果我们要把”属性”(property)和”方法”(method),封装成一个对象,甚至要从原型对象生成一个实例对象,我们应该怎么做呢?
this是 JavaScript 语言的一个关键字,是函数生成时,在函数内部自动生成的指向函数作用域的指针。1
2
3function test() {
this.a = 1;
}
要理解闭包,首先必须理解Javascript特殊的变量作用域,变量的作用域有两种:全局变量和局部变量。
Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。1
2
3
4
5
6
7 var a=111;
function a1(){
alert(a);
}
a1(); // 111
另一方面,在函数外部无法读取函数内的局部变量。1
2
3
4
5
6function a1(){
var a=999;
}
alert(a); // a is not defined
这里有一个地方需要注意,函数内部声明变量的时候,一定要使用let命令。如果不用的话,实际上声明了一个全局变量!1
2
3
4
5
6
7function a1(){
a=111;
}
a1();
alert(a); // 111