用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变量。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。