zoukankan      html  css  js  c++  java
  • 什么是面向对象以及其意义,prototpye原型

    什么是面向对象:
      使用对象时,只关注对象提供的功能,不关注其内部的细节 例如:jquery
    什么是对象:
      对象是一个整体对外提供一些操作,比如 收音机
    面向对象编程OOP的特点:
      1、抽象:把主要的特征、跟问题相关的特征抽出来
      2、封装:看不到里面的东西,把表面的功能用好
      3、继承:遗传,从父类上继承出一些方法,子类又有一些自己的特性(最大限度重用已有的代码)
    继承又分:
      多重继承
      多态继承
    对象的组成:
      1、方法——相当于函数:过程、动态 例如:
      
    function aaa(){		  //函数 自由
      alert("123")
    }
    
    arr = [1,2,3];
    arr.aaa=function(){   //属于一个对象
      alert("321")
    }
    aaa()
    arr.aaa()
    

      2、属性——相当于变数:状态、静态 例如:

    var a=12	  //变量 - 自由自在的不属于任何人
    alert(a)
    
    var arr=[1,2,3,4,5,6]
    arr.a=21     //属性 -  属于一个对象的
    alert(arr.a)
    

      

    this的理解
      当前发生事件的对象
      当前的方法属于谁
     
      练习题:写一个面向对象的小例子
    var obj = new Object();
    
    obj.name='林肯';
    obj.qq='2669667558';
    
    obj.Myname=function(){
    alert("我的名字是"+this.name);
    }
    obj.Myqq=function(){
    alert("我的QQ是"+this.qq);
    }
    obj.Myname();
    obj.Myqq();
      总结:创建一个对象,写出程序的方法,在调用。 但是这种方法复用性不高。 优化以后如下:
     
    //工厂模式
    function oriented(name,qq){     //整体称之为什么:构造函数
        //原材料
        var obj = new Object();
    
        //加工
        obj.name=name;
        obj.qq=qq;
    
        obj.Myname=function(){
            alert("我的名字是"+this.name);
        }
        obj.Myqq=function(){
            alert("我的QQ是"+this.qq);
        }
    
        //出厂
        return obj
    }
    var obj=oriented('林肯','2669667558');
    obj.Myname();
    obj.Myqq();
    
    var obj2=oriented('赵三','2669667558');
    obj2.Myname();
    obj2.Myqq();
    这样写:可以让方法复用
    

      

    原型——prototpye
    什么是原型
      可以把原型理解为class,修改他可以影响一类元素
      //解决函数重复 <==>原型
      //原型名词解释
      // CSS JS
      // class 一次给一组元素加样式 原型
      // 行间样式 一次给一个元素加样式 对对象加事件
     
      /*例子:原型 数组求和 <==> 类和对象的使用 类可以new */
      
    var arr1 = new Array(12, 13, 11, 14, 53, 67, 86, 85, 23);
    var arr2 = new Array(11, 22, 33, 44, 55, 66, 77, 88);
    Array.prototype.sum = function () {
                var result = 0;
                for (var i = 0; i < this.length; i++) {
                    result += this[i];
                }
                return result;
       };
       //alert(arr1.sum());
     
    在已有的对象中添加属性,方法
     
  • 相关阅读:
    常见排序算法的实现
    Never-build package 'XXXX' requires always-build package 'EhLib70'
    自制的七个C,总结的太好了
    那些有影响力的语言
    数海笔记(0)-程序员为什么要学数学
    linux 多线程编程笔记
    双指数边缘平滑滤波器用于磨皮算法的尝试。
    对于树的序列化,用了stream,很好
    很聪明的解法
    按窗口获得最大数 和 中位数
  • 原文地址:https://www.cnblogs.com/chengxiang123/p/8510361.html
Copyright © 2011-2022 走看看