zoukankan      html  css  js  c++  java
  • JS 创建自定义对象的方式方法

    一、概述

      还记得刚开始做项目的时候,看到别人封装的js工具类百思不得其解,看来看去看不懂,深挖一下,其实就是自己没有耐下心去看,但是遇到问题不解决,总会遇到的,今天还是遇到了,就去找了找帖子,重新思考与实践一下,豁然开朗~!在此记录一下迟来顿开的茅塞。

      关于JS 对象,啊,对象么,不就是一个个实例么,是的,js 也可以创建类,创建对象,创建对象方法,我们今天就具体说一下。

    二、创建与使用(开始)

      es 标准给我们提供了String、Math、Array等等这些js对象,当我们使用的时候只需要new一下或者使用其构造方法就可以,比如:

      

    var v = "";
    
    let arr = new Array();

      类似上面这种,然后就可以使用其方法了,当然我们也可以给他添加类方法,如何加,大家向下看。

      如果我们需要自己创建对象,使用最多的可能就是json对象,像是这样:

    var obj = {x:{y:1}};
    
    console.log(obj.x.y)
    //    1 

      但是如果我们想把他搞成类似Array这种自定义类,然后创建我们需要的方法,咋整,直接加function 么,是的,就是加function,只不过要注意写法,还有的就是跟java对象一样,它有私有、实例、与类只说,接着往下看。

    1)建立类,建立类的实例

      首先我们建立一个对象,作为对象,必须要有构造方法,像是这样:

    // 第一种
    function t(){
        alert(1);
    }
    
    // 第二种
    var t2 = function(){
        alert(2)       
    }

      是不是想骂人,喂,贴主你是不是忽悠人呢?这TM 不就是我们平时使用的函数吗,先别急,我不否认我们平时使用最多的在js 里就是这样,对于新手来说也是最容易,理解的就是个方法,但是函数也是对象,我们可以对他进行引用,也可以创建它的实例,像这样:

    var test = new t();

      恭喜你,你已经成功创建了t的实例,实例名为test。然后就可以调用类里的属性和方法了,好,我们接着建立方法,由于时间关系,我已经有点困了,以下就不多说了~~ (你妹的,快讲重点)

    2)私有属性与私有方法

      需要注意的时候私有属性和方法,外部是无法访问的,跟java类似,只提供给闭包内使用(关于闭包,有空再说),大家记住只能在你的类内部使用就好。

    function t(
      // 私有属性    
      var a = '1';
    
      // 私有方法
      var siyou = function(){
         alert(1);  
      }   
               
    )

     

    3)实例属性与实例方法

      关于实例方法,当我们建立类的实例后,就可以访问其实例方法与实例属性了,这里我声明了一个私有属性并把this赋值给他,为什么这样(以后再说,真困了= =),当然你可以直接使用this也可以。

    function t(){
        var _self = this;
          
         _self.test=function(){
            alert(1)
        }  
        
       _self.test2 = 1;    
    
    }    
    
    // 调用
    
    var test = new t();
    t.test2;
    // 1
    t.test;
    // alert

    4)类方法与类属性

      关于类方法,你可以把它理解为直接可以应用的方法或属性,比如Math.round(param) 就是最典型的类方法。

    function t(){
        var _self = this;
          
         _self.test=function(){
            alert(1)
        }  
        
       _self.test2 = 1;    
    
    }    


    t.TEST=1;
    t.TEST2=function(){.....}
    // 或者引用
    function test(){}

    t.TEST2 = test;

    三、动态增加与删除

      下面是动态增加与删除。太困了~撑不住了。。

    //动态增加属性
    var obj = {};
    obj.v = '2';
    // 或者
    obj[v] = '2';
    // 上面是json对象哦

    // 动态增加方法与属性
    // 属性
    var o = function(){};
    o.prototype.test = '1';
    // 方法
    o.prototype.test2=function(){alert('test')}
    var obj= new o();
    obj.test;
    // 1
    obj.test2();
    // alert

    // 动态删除方法与属性
    delete o.prototype.test
    delete o.prototype.test2

    // 动态增加实例属性与方法
    var t = new o();
    t.v = '2';
    t.x = function(){alert(1)}
    t.v;
    // 2
    t.x();
    // alert

    // 删除实例属性和方法
    delete t.v
    delete t.x

    另外关于实例属性还可以通过下标的方式,在此我多说了,(感谢保住happykejie)大家可以参考博主happykejie的文章JS 自定义对象 属性      ,这里主要是讲了一点个人的理解与记录,这样利于记忆。

    成灰之前,抓紧时间做点事!!
  • 相关阅读:
    操作MySQL数据库相关代码
    JSP(1)
    servlet(6)
    servlet(5)
    Java易错知识点(2)
    Java Web项目中解决中文乱码方法总结
    Java易错知识点(1)
    servlet(4)
    TCP协议之三次握手四次挥手
    day-4 map&filter
  • 原文地址:https://www.cnblogs.com/jony-it/p/10296755.html
Copyright © 2011-2022 走看看