day16-JavaScript 面向对象以及原型
一、前言
今天来说JavaScript的面向对象以及原型,看看它和python有什么不同,这个Javascript的面向对象是怎么实现的。
二、JavaScript的面向对象
2.1、类的定义
说明:用this关键字,来定义一个Javascript的类,同时也是一个构造方法。
|
1
2
3
4
5
6
7
|
//定义类function 函数名(形参){ this.属性名= 形参名; }//创建对象var 对象名 = new 函数名(实参) |
实例:
|
1
2
3
4
5
6
7
8
|
//定义function Foo(name){ this.name = name; }//创建对象var obj = new Foo("shuaigaogao");obj.name; //获取此对象的属性 |
小结:
- this 代指对象(类似于 python 中的 self 关键字)
- 创建对象时,用 new + 函数()
三、原型
3.1、原型前戏
说明:正常的我们创建一个类,并且在类里面创建函数,然后通过对象调用。
|
1
2
3
4
5
6
7
8
9
10
11
12
|
function Foo(name){ this.name = name; this.sayName = function(){ console.log(this.name); }}//创建obj1var obj1 = new Foo("zhangsan");obj1.sayName()//创建obj2var obj2 = new Foo("zhangsan");obj2.sayName() |
调用规则如下:

这样就有一个问题,方法就不能共享了,js是在每个对象里面都保存了一份,所以这样很占内存的,所以怎么办呢?所以我们想要的是把它放到一个公有地方,要用的时候去拿一下,就可以了,不需要占内存。
3.2、原型
说明:对象调用方法时,自动去找它这个类,然后通过这个类的原型里面再去找对应的方法,如果有就执行一下。
|
1
2
3
4
5
6
7
8
9
10
11
12
|
function Foo(name){ this.name = name;}//创建Foo的原型Foo.prototype = { 'sayName' : function(){ console.log(this.name); }};var obj = new Foo("shuaigaogao");obj.sayName(); //调原型中的sayName方法 |
调用规则如下:

四、总结
- this 代指对象(类似于 python 中的 self 关键字)
- 创建对象时,用 new + 函数()
- 利用类的原型去执行公共方法

浙公网安备 33010602011771号