鉴于自己在JavaScript这方面比较薄弱,所以就找了一本书恶补了一下(被称为犀利书的JavaScript权威指南)。书的内容虽然多了点,但这也充分说明了js中的东西还是挺多的。虽然我们的定位不是前端,但最好还是了解一下js这个发展了将近20年但依然很火的技术。

两年前,写过一篇关于JavaScript闭包的博客,所以对闭包这个词印象很深,在看这书的时候,又看到了闭包,那么这次再看闭包,会有什么不同的理解呢?

大家都知道,在JavaScript中是没有类的概念的,更没有私有、公有的成员变量这样的概念。但是它又是确确实实存在着这些东西。

看下面例子:

  1. function MyClass(){
  2. this.name='李四';
  3. var age=2;
  4. }
  5. var test=new MyClass();
  6. alert(test.name); //李四
  7. alert(test.age)     //undefined
  8. test.name='张三';

在用谷歌浏览器调试的过程中,age的值始终无法看到,但确实是存在的。虽然在调用test.age的时候,不会报错,但它取不出来age的值。而对于name来说,它用的是this.来修饰的,那么它就相当于是public的变量了。而用var声明的变量,就是private,至于class(Java中)这个嘛,非function莫属了。

那么对于private的变量应该怎样访问呢?

在Java中对于private的变量,我们要访问它,是为其提供了get、set方法对其进行操作,在这里也一样。看下面代码:

  1. this.name='李四';
  2. var age=2;
  3. this.getAge=function(){
  4. alert(age);
  5. }
  6. this.setAge=function(value){
  7. if(value>0 && value < 150)
  8. age=value;
  9. }
  10. }
  11. var test=new MyClass();
  12. test.getAge()     //2
  13. test.setAge(11);
  14. test.getAge();    //11

在这里,这完全模拟了一个Java类中的public、private属性及私有属性的操作。

对于私有属性操作的方式,在JavaScript中有一个特有的称呼:闭包。

通过Java类的声明来理解JavaScript,突然发现曾经认为难以理解的闭包,变得不太理解为什么定义这样一个概念。

虽然目前为止还没有生成javascript属性的get、set方法,但ext已经提供了这样的工具方法来使javascript对象的属性直接具有get、set方法。

在以往的javascript使用过程中,我们更多的是采用面向过程方式,这也就暴露了我们对于js代码的复用程度很低。js的面向对象,势在必行。

(转载)JavaScript中面向对象那点事的更多相关文章

  1. JavaScript中面向对象那点事

    鉴于自己在JavaScript这方面比較薄弱.所以就找了一本书恶补了一下(被称为犀利书的JavaScript权威指南).书的内容尽管多了点,但这也充分说明了js中的东西还是挺多的.尽管我们的定位不是前 ...

  2. javascript中面向对象的5种写法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. JavaScript中面向对象的三大特性(一个菜鸟的不正经日常)

    经过几天的学习,把jQuery给啃会了,但是运用的还不算特别熟练,总感觉自己在JavaScript方面的基础十分欠缺,所以继续拾起JavaScript,开始更好的编程之旅~ 今天学的是JavaScri ...

  4. JavaScript中继承的那些事

    引言 JS是一门面向对象的语言,但是在JS中没有引入类的概念,之前特别疑惑在JS中继承的机制到底是怎样的,一直学了JS的继承这块后才恍然大悟,遂记之. 假如现在有一个“人类”的构造函数: functi ...

  5. 转载 javascript中的正则表达式总结 一

    定义正则表达式的方法 定义正则表达式的方法有两种:构造函数定义和正则表达式直接量定义.例如: var reg1 = new RegExp('\d{5, 11}'); // 通过构造函数定义 var r ...

  6. 转载: JavaScript中执行环境和栈

    在这篇文章中,我会深入理解JavaScript最根本的组成之一 : "执行环境(执行上下文)".文章结束后,你应该对解释器试图做什么,为什么一些函数/变量在未声明时就可以调用并且他 ...

  7. [转载]JavaScript 中小数和大整数的精度丢失

    标题: JavaScript 中小数和大整数的精度丢失作者: Demon链接: http://demon.tw/copy-paste/javascript-precision.html版权: 本博客的 ...

  8. 转载 javascript中(function($){...})(jQuery)写法是什么意思

    javascript中(function($){...})(jQuery)写法是什么意思   这里实际上是匿名函数function(arg){...}这就定义了一个匿名函数,参数为arg 而调用函数 ...

  9. 转载 javascript中的正则表达式总结 二

    学习正则表达式 今年的第一篇javascript文章就是这个正则表达式了,之前的文章是转载别人的,不算自己的东西,可以忽略不计,最近突然想把转载别人的东西 统统删掉,因为转载过的文章,我根本没有从中获 ...

随机推荐

  1. Android Studio与Genymontion的安装

    需要安装的软件: VirtualBox 5.1.4 Genymotion 2.7.2 Android Studio 2.1.2 安装步骤: 使用安装版安装Android Studio 1.     执 ...

  2. npoi批量

    npoi批量导入实现及相关技巧 批量导入功能对于大部分后台系统来说都是不可或缺的一部分,常见的场景-基础数据的录入(部门,用户),用批量导入方便快捷.最近项目需要用到批量导入,决定花点时间写套比较通用 ...

  3. [Kinect]XBox One Kinect连接Windows

    注:本文全原创,作者:Noah Zhang  (http://www.cnblogs.com/noahzn/) XBox One带体感套装去年就买了,昨天京东349元入了个适配器,下午就送到了,开箱. ...

  4. C#与C++的几个不同之处知识点

    1.索引器 索引器是C#自创的内容,这是C++当中没有的内容,所以做一次笔记. 索引器是用于书写一个可以通过使用[]想数组一样直接访问集合元素的方法.我们只需要指定待访问实例或元素的索引.索引器的语法 ...

  5. BZOJ 1001 狼捉兔子

    Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个 ...

  6. 安装drupal练习网站遇到的问题

    1 Skip #conjunction key in __clone() method of core/includes/database/query.inc 解决方案:https://www.dru ...

  7. keil多文件组织方法

    方法一 首先新建一个main.c的文件,加入到项目中,该文件中主要写main函数,然后,新建文件,如delay.c,编写内容之后,不要加入到项目,而是在main.c文件的开始写上#include“de ...

  8. Silicon Labs电容式触摸感应按键技术原理及应用

    市场上的消费电子产品已经开始逐步采用触摸感应按键,以取代传统的机械式按键.针对此趋势,Silicon Labs公司推出了内置微控制器(MCU)功能的电容式触摸感应按键(Capacitive Touch ...

  9. Sitemesh 3 的使用及配置

    1 . Sitemesh 3 简介 Sitemesh 是一个网页布局和修饰的框架,基于 Servlet 中的 Filter,类似于 ASP.NET 中的‘母版页’技术.参考:百度百科,相关类似技术:A ...

  10. python2.7中使用mysql (windows XP)

    一.首先下载mysql—python模块,下载完毕之后会有一个MySQL-python-1.2.3.win32-py2.7.exe文件,点击安装一路next,ok. 二.编辑配置文件(setting. ...