Javascript面向

一、前言

  面向对象:专注于由哪一个对象来解决这个问题,编程特点是出现了一个类,从类中拿到对象,由这个对象去解决具体问题。
       对于调用者来说,面向过程需要调用者自己去实现各种函数。而面向对象,只需要告诉调用者,对象中具体方法的功能,而不需要调用者了解方法中的实现细节。

二、Javascript面向对象

  2.1 定义类  

//定义

function 类名(形参){

    this.属性 = 形参;
}


// 创建对象

var 对象名 = new 类名(实参)

  事例:

//类

function Foo(n){

    this.name = n;
}


// 对象

var obj =new Foo('bigberg');

obj.name;

  注:this 代指对象(类似python中的self)  

    创建对象  new + 类名(参数)

三、Javascript的原型

  3.1 javacript中的方法调用

  事例:  

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

  这样有一个问题,方法就不能共享了,js是在每个对象里面都保存了一份,所以这样很占内存的。在python中,方法都是保存在类中的,对象中只保存属性,当对象调用方法时,是去类中调用同一个方法,这样就不会重复创建。

//python

class Person(object):

    def __init__(self,name):
        self.name = name

    def eat(self):
        print("%s  like eatting beaf. "  %(self.name))


obj = Person('bigberg')
obj.eat()

  

  3.2 JavaScript的原型

  对象调用方法时,自动去找它这个类,然后通过这个类的原型里面再去找对应的方法  

function Foo(name){
   this.name = name;
}
//创建Foo的原型
Foo.prototype = {
   'sayName' : function(){
       console.log(this.name);
   }
};
 
var obj = new Foo("bigberg");
obj.sayName(); //调原型中的sayName方法

  利用类的原型去调用类中公用的方法

原文地址:https://www.cnblogs.com/bigberg/p/9427111.html