zoukankan      html  css  js  c++  java
  • 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方法
    

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

  • 相关阅读:
    【C++】深度探索C++对象模型读书笔记--关于对象(Object Lessons)
    【操作系统】调度算法
    【vim】vim常用命令
    【linux】linux的数据流重定向
    以太网帧,IP,TCP,UDP首部结构
    IPv4编址及子网划分
    【计算机网络】计算机网络模型
    【计算机网络】NAT:网络地址转换
    【设计模式】C++中的单例模式
    (转)linux查找技巧: find grep xargs
  • 原文地址:https://www.cnblogs.com/bigberg/p/9427111.html
Copyright © 2011-2022 走看看