zoukankan      html  css  js  c++  java
  • 面向对象的研究1

      其实学了这么久的javascript一直都困扰着面向对象编程这个概念,其实虽然我们不理解,但是实际上我们工作的平时,无时无刻不接触者面向对象,并给我们提供了各种便利。

      例如我们用的JSON数据传输格式,其实就是一种将数组、字符串、属性、方法 等多种元素融合在一起的东西,比如我们平时编写的function函数,也是一种对象。

      其实我们可以这么理解,何为对象?

      1、函数的存在,就是一个相对抽象的可重用性较高的程序模版,那么可以减免,我们在程序中去编写重复的代码,我们可以将 功能相同的部分,编写出一套模版;

      2、相对而言的,对象以如此,对象就是一种高度集合的组织方式,我们可以通过继承的方式,来调用它,一切 的一切一个“.”就可以搞定

      其实javascript中大概可分为以下一种对象

    1、Function对象=====================>可以分为两种1、作为Funtion的实例,可以使用参数来调用,例如 alert()方法

                                    2、作为构造函数的Function对象,必须通过new操作符来进行实例化

    2、object对象======================>格式一般为 var a=new Object();

    3、内置对象=======================>例如Math Number String Array RegExp Boolean  Date等都有内置的方法,他们使用的方法,都要先通过new操作符来进行实例化

    PS:讲解俩概念 实例和实例化

    什么是实例化?可以理解为,万物总有一个根本,假如人都是女娲造的,那么我们每个人都具有能走能跳能动能跑的能力,那么这些都是女娲赋予我们的,那么每当我们想创造一个新的人的时候,也就是new出来一个人,必须去从根本上去寻找他;

    类型于 var 新人=new 女娲();那么同样实例化的意思就是,通过像源头的对象进行实例化操作来创建的一个实例,比如说var a=new Array();Array底层存在有length属性,存在有push slice join splice等方法,那么通过new Array这个源头的对象,就能创造出一个和它拥有同样能力的副本,并且继承了他的所有属性和方法。

    PS:同样我们要根据这个来理解一个概念,一个实例是不能再进行实例化的,一切都要从源头进行实例化,比如说 var a=new Array();是正确的,但是你在通过 a进行实例化 var b=new a,那就会报错

    javascript给我们提供了很多内置的对象,让我么可以自由的操控其中的属性和方法,但是js的灵魂其实是自定义创建的对象,也就是 通过Object创建的对象,进行面向对象编程。

    最简单的创建对象的方法就是:

    var a=new Object();或者var a={};

    其实通过深入理解的时候,你也许会慢慢明白,其实object和array等内置对象其实一样,只不过array被赋予了属性和方法,所以仅仅创建一个对象没有任何意义,里面的一切都是空的,一切东西都需要你去添加。所以我们要学会向其中添加属性和方法

    a.age=23;

    a.say=function(){

      alert(this.age);

    },那么这种创建出来的属性和方法是静态的,日后我们会讲解,这些是无法继承的。

    但是之前我们也说过“对象就是一种高度集合的组织方式,我们可以通过继承的方式 来调用它“,那么着需要引入构造函数的概念

    Function对象的构造函数有一个不同于其他对象的特点:它的实例也可以作为构造器方法(即源头),因为可以用来创建函数的新实例(即我们可以new它)

    这是一个非常重要的特性,我们可以根据这个特性,完成我们想要的继承功能

    比如:

    var a=function(msg){alert(this.msg);this.msg=msg;}<==>等价于function a (){}<==>等价于  var a=new Function() //( 但是最后这个有性能问题,所以一般我们通过前面两种来进行实例化)

    那么当我们以a为源头 创建b这个实例的时候,即 var b=new a("lyl");那么这个是合法的,并且会立即执行,同时还为b添加了一个新的属性即msg,我们可以通过b.msg来读到它,

    但是需要注意到的就是,这个属性值只有被它实例化过的实例对象才能读取,其本身无法读取,始终都是弹出undefined!

  • 相关阅读:
    HTML DOM 06 节点关系
    HTML DOM 05 事件(三)
    HTML DOM 05 事件(二)
    HTML DOM 05 事件(一)
    html DOM 04 样式
    html DOM 03 节点的属性
    html DOM 02 获取节点
    html DOM 01 节点概念
    JavaScript 29 计时器
    JavaScript 28 弹出框
  • 原文地址:https://www.cnblogs.com/caichongdd/p/2730815.html
Copyright © 2011-2022 走看看