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

用javascript实现完全的类(private、pubulic等)的更多相关文章

  1. JavaScript实现一个复数类

    <script type="text/javascript"> /** * 这里定义Complex类,用来描述复数 */ /** * 这个构造函数为它所创建的每个实例定 ...

  2. Effective JavaScript Item 51 在类数组对象上重用数组方法

    Array.prototype对象上的标准方法被设计为也能够在其他对象上重用 - 即使不是继承自Array的对象. 因此,在JavaScript中存折一些类数组对象(Array-like Object ...

  3. [转] 用javascript修改css伪类的几种方法

    用javascript修改css伪类的几种方法: Modify pseudo element styles with JavaScript http://pankajparashar.com/post ...

  4. 深入JavaScript对象(Object)与类(class),详细了解类、原型

    JavaScript基于原型的对象机制 JavaScript原型上的哪些事 一.JavaScript基于原型的对象机制 JavaScript对象是基于原型的面向对象机制.在一定程度上js基于原型的对象 ...

  5. 【JavaScript】获取未知类的结构

    目录结构: // contents structure [-] 为什么需要获取类的结构 关于JavaScript中的类 定义类的方法 第一种 第二种 DEMO HTML页面 date文件 注意事项 参 ...

  6. 自己理解的javascript 的对象和类理解

    首先需要先理解类和对象的意义,我个人理解如下: 类:对象的抽象化: 对象:类的实体: javascript中没有class关键字和类的用法,只能用伪类来做类的,所以要用function来定义累的名字: ...

  7. VC与JavaScript交互(三) --- CWebPage类调用javascript函数(给js函数传参,并取得返回值)

    ①需要一个别人写好的类CWebPage,将其对于的两个文件WebPage.h和WebPage.cpp添加到工程中. ②添加WebBrowser控件,在视图/对话框类的头文件中#include &quo ...

  8. Javascript使用function创建类的两种方法

    1.使用function类 //myFunction.js var CMyFunc=function() { //类的公共方法,供外部调用 this.Func1=function() { var i= ...

  9. JavaScript创建命名空间、类及类成员

    JavaScript代码: //为String对象增加方法isNullOrEmpty String.isNullOrEmpty = function (a) { if (a != null & ...

随机推荐

  1. ecshop订单状态对应值详解

    ecshop的订单状态都是在ecs_order_info表中的字段里. 订单状态 未确认 取消 确认 已付款 配货中 已发货 已收货 退货 order_status 0 2 1 1 1 5 5 4 s ...

  2. Linux系统的时区和时间调整

     linux调整系统时区: 1)tzselect命令 找到相应的时区文件/usr/share/zoneinfo/Asia/Shanghai,用这个文件替换当前的/etc/localtime文件. 或者 ...

  3. parted

    1.选择分区表 sudo parted -s /dev/sdXX mklabel gpt 2.创建分区 sudo parted -s -- /dev/sdX mkpart primary 0 -1s ...

  4. bjective-C 中核心处理字符串的类是 NSString 与 NSMutableString

    Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重 ...

  5. c语言的编译过程和GCC 编译参数

    原文: http://www.cnblogs.com/zhangShanGui/p/4912135.html C语言的编译过程和GCC编译参数 C语言的编译一般有三个步骤: 预编译: gcc -E - ...

  6. get 和 post请求的区别

    (1)GET请求用于获取信息,从Client的角度看,不会改变资源状态,并且多次对同一URL的多个请求应该返回相同的结果.        GET请求的参数会显示在URL中,即放置在HTTP协议头中(所 ...

  7. sqlserver日志文件过大的处理方法

      SqlServer 数据库中与备份和恢复相关的日志文件有MDF和LDF文件 存在于\\sqlserver_install_dir\MSSQL\Data\1.文件解释.mdf文件    MDF是SQ ...

  8. MSG 结构

    MSG 消息结构 在 Windows 程序中,消息是由 MSG 结构体来表示的. 结构原型: typedef struct tagMSG { HWND   hwnd; UINT   message; ...

  9. linux ubuntu平台下安装Scrapy

    1.安装Python sudo apt-get install python2.7 python2.7-dev 2.安装pip 下载get-pip.py 选中该文件所在路径,执行下面的命令 sudo ...

  10. Skewed Sorting

    Description Farmer John has 2^N (1 <= N <= 10) cows, each conveniently labeled with paint on h ...