zoukankan      html  css  js  c++  java
  • Javascript 类的实现

    最近在几个群上经常看到有人问在一个类里的一个 function 怎么调用 this.  定义后公开的方法。现发一篇类实现的随笔。

    首先说说类,在一个类里我们会有以下的几个特征:

    1. 公有方法

    2. 私有方法

    3. 属性

    4. 私有变量

    5. 构造函数

    我们直接看一个例子:

    /***定义类***/
    var Class = function(){
        var _self = this;//把本身引用负值到一变量上
    
        var _Field = "Test Field"; //私有字段
        var privateMethod = function(){ //私有方法
            alert(_self.Property); //调用属性
        }
    
        this.Property = "Test Property"; //公有属性
        this.Method = function(){ //公有方法
            alert(_Field); //调用私用字段
            privateMethod(); //调用私用方法
        }
    }
    

    这里我已把注释都写上,大家大概也会一眼就看得明白。对于少写JS的朋友,可能会觉得奇怪为什么我会定义一个_self的变量, 因为在js里,this不用对于其他的对象语言,他的解析过程与运行过程中this会改变的。这里简单说说js里this的定义,若有需要我可以开多一篇。

    定义:this是包含它的函数作为方法被调用时所属的对象。

    特征:this的环境可以随着函数被赋值给不同的对象而改变!

    有兴趣的朋友可以网上找找资料了解一下,说回正题,这里的_self目的是为了开多一个私有的变量,把引用直接指向类的本身。

    刚刚还说到一个构造函数的问题,这可以直接用代码来实现。在函数的最后直接写执行代码就OK。

    /***定义类***/
    var Class = function(){
        var _self = this;//把本身引用负值到一变量上
    
        var _Field = "Test Field"; //私有字段
        var privateMethod = function(){ //私有方法
            alert(_self.Property); //调用属性
        }
    
        this.Property = "Test Property"; //公有属性
        this.Method = function(){ //公有方法
            alert(_Field); //调用私用字段
            privateMethod(); //调用私用方法
        }
    
        /***构造函数***/
        var init = function(){
            privateMethod();
        }
        init();
    }
    

    使用这个类
    var c = new Class();
    c.Method(); //使用方法
    这样就OK了

      

    转自:http://www.css88.com/archives/4464   

  • 相关阅读:
    SQL中关于Left Join转为Inner Join的问题,即左关联转为内关联的问题
    Mybatis Plus 2 升到 Mybatis Plus 3 时,oracle 自增序列的相关问题
    Java项目启动时,oracle 驱动异常
    window 下安装 Arthas
    postman 中给所有接口token授权的配置
    探讨:在循环前与在循环中创建对象的区别
    当你无法发现问题所在时,不要简单地把代码或者数据还原
    http://875880923.iteye.com/blog/1963400
    2013成都网络赛 J A Bit Fun(水题)
    2013成都网络赛 C We Love MOE Girls(水题)
  • 原文地址:https://www.cnblogs.com/terrylin/p/2874379.html
Copyright © 2011-2022 走看看