• 用javascript实现完全的类(private、pubulic等)


      js是面向对象的,但是其不像java一样完全的面向对象,但是利用其灵活性,我们可以使用它进行高度的模拟,来看下面的代码:

    function Student(name){
    			this.name=name;//public变量
    			var id=Math.random()*100; //private变量
    			function setId(newId){
    				id=newId;
    			}//private方法
    			var that=this;
    			this.getId=function(){
    				///
    			}//特权方法
    		}
    		Student.prototype.getName=function(){
    			return this.name;
    		}//public方法
    

      是的,通过上面的方法便可以模拟出一个标准的类。ok,我们总结一下:

    • 私有变量 在对象内部使用'var'关键字来声明,而且它只能被私有函数和特权方法访问。
    • 私有函数 在对象的构造函数里声明(或者是通过var functionName=function(){...}来定义),它能被特权函数调用(包括对象的构造函数)和私有函数调用。
    • 特权方法 通过this.methodName=function(){...}来声明而且可能被对象外部的代码调用。它可以使用:this.特权函数() 方式来调用特权函数,使用 :私有函数()方式来调用私有函数。
    • 公共属性 通过this.variableName来定义而且在对象外部是可以读写的。不能被私有函数所调用。
    • 公共方法 通过ClassName.prototype.methodName=function(){...}来定义而且可以从对象外部来调用。
    • 原型属性 通过ClassName.prototype.propertyName=someValue来定义。
    • 静态属性 通过ClassName.propertyName=someValue来定义。(也就工具属性和方法)
    • 我认为可以简单的把privileged方法简单的看成是构造函数里的public方法,因为privileged方法可以被外界和public方法访问, 而它自身又可以访问private变量。
  • 相关阅读:
    autoreleasepool
    #ifndef/#define/#endif
    类工厂创建单例
    第一篇献给你:Block的回调
    博客纪念日
    [系列教程] Discuz模板的制作方法
    使用Discuz!后台备份和恢复Discuz!站点数据库的方法教程
    discuz x2.5 还原教程
    80后公务员辞职自述:7年收入没涨 能力是听话
    公务员队伍开始动荡了吗?
  • 原文地址:https://www.cnblogs.com/dunken/p/4368784.html
Copyright © 2020-2023  润新知