day16-JavaScript面向对象以及原型

一、前言

  今天来说JavaScript的面向对象以及原型,看看它和python有什么不同,这个Javascript的面向对象是怎么实现的。

二、JavaScript的面向对象

2.1、类的定义

说明:用this关键字,来定义一个Javascript的类,同时也是一个构造方法。

//定义类
function 函数名(形参){
           this.属性名= 形参名;
       }

//创建对象
var  对象名 = new 函数名(实参)

实例:

//定义
function Foo(name){
           this.name = name;
       }

//创建对象
var obj = new Foo("shuaigaogao");
obj.name; //获取此对象的属性

小结:

  • this 代指对象(类似于 python 中的 self 关键字)
  • 创建对象时,用  new  + 函数()

三、原型

3.1、原型前戏

说明:正常的我们创建一个类,并且在类里面创建函数,然后通过对象调用。

function Foo(name){
   this.name = name;
   this.sayName = function(){
       console.log(this.name);
   }
}
//创建obj1
var obj1 = new Foo("zhangsan");
obj1.sayName()
//创建obj2
var obj2 = new Foo("zhangsan");
obj2.sayName()

调用规则如下:

 

这样就有一个问题,方法就不能共享了,js是在每个对象里面都保存了一份,所以这样很占内存的,所以怎么办呢?所以我们想要的是把它放到一个公有地方,要用的时候去拿一下,就可以了,不需要占内存。

3.2、原型

说明:对象调用方法时,自动去找它这个类,然后通过这个类的原型里面再去找对应的方法,如果有就执行一下。

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  + 函数()
  • 利用类的原型去执行公共方法
posted @ 2018-01-23 14:16  帅丶高高  阅读(144)  评论(0编辑  收藏  举报