JavaScript开发创建类:向模块化进军

日期: 2012-06-20 作者:李晶 来源:TechTarget中国 英文

  在讲解MVC的本质之前,我们首先给大家补习一下基础知识,比如JavaScript的类和事件。只有打下一个坚实的基础,才能更好地学习、理解更高级的概念。

  对于静态的类来说,JavaScript对象直接量就已经够用了,但它对使用继承和实例来创建经典的类往往更有帮助。有必要强调一下:JavaScript是基于原型的编程语言,并没有包含内置类的实现。但通过JavaScript可以轻易地模拟出经典的类。

  JavaScript中的类口碑并不太好,因为“不够JavaScript”而饱受批评。jQuery并没有涉及太多架构方法和继承模式,这让JavaScript开发者确信自己不必考虑太多架构性的东西,甚至觉得类的用处不大或干脆禁用类。实际上,类是另一种有用的工具,作为一名实用主义者,我相信类在JavaScript中的重要性丝毫不亚于它在其他现代编程语言中的重要性。

  JavaScript中并没有真正的类,但JavaScript中有构造函数和new运算符。构造函数用来给实例对象初始化属性和值。任何JavaScript函数都可以用做构造函数,构造函数必须使用new运算符作为前缀来创建新的实例。

  new运算符改变了函数的执行上下文,同时改变了return语句的行为。实际上,使用new和构造函数很类似于传统的实现了类的语言:

  var Person = function(name) {
  this.name = name;
  };
   // 实例化一个Person
  var alice = new Person(‘alice’);
  // 检查这个实例
  assert( alice instanceof Person );

  构造函数的命名通常使用驼峰命名法,首字母大写,以此和普通的函数区分开来,这是一种习惯用法。记住这一点非常重要,因为你不会希望用省略new前缀的方式来调用构造函数。

  // 不要这么做!

  Person(‘bob’); //=> undefined

  这个函数只会返回undefined,并且执行上下文是window(全局)对象,你无意间创建了一个全局变量name。调用构造函数时不要丢掉new关键字。

  当使用new关键字来调用构造函数时,执行上下文从全局对象(window)变成一个空的上下文,这个上下文代表了新生成的实例。因此,this关键字指向当前创建的实例。尽管理解起来有些绕,实际上其他语言内置类机制的实现也是如此。

  默认情况下,如果你的构造函数中没有返回任何内容,就会返回this——当前的上下文。要不然就返回任意非原始类型的值。比如,我们可以返回一个用以新建一个新类的函数,第一步要做的是创建自己的类模拟库:

  var Class = function(){
  var klass = function(){
  this.init.apply(this, arguments);
  };
  klass.prototype.init = function(){};
  return klass;
  };
  var Person = new Class;
  Person.prototype.init = function(){
  // 基于Person 的实例做初始化
  };
  // 用法:
  var person = new Person;

  令人费解的是,由于 JavaScript 2(http://www.mozilla.org/js/language/js20-1999-02-18/

  classes.html规范从未被实现过,class一直都是保留字。最常见的做法是将变量名class改为_class或klass。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • AWS MEAN堆栈+JavaScript=快速搭建应用

    开发人员在构建Web应用时有许多选择。市面上有无数的框架和语言可选,而像AWS这样的云平台可以方便地部署和扩展应用程序。

  • JDK 8u40更新:新增功能抢先看

    俗话说长江后浪推前浪,一代新人换旧人,Java更新版本交替,也是这样一个道理。甲骨文又给Java添加了哪些新功能。

  • 移动浏览器到云:JavaScript地位正在扩张

    不难发现人们非常喜欢在前端开发中使用JavaScript。但是,令我们惊讶的是后端开发也如此青睐JavaScript,促进了基于云和基于数据中心的托管应用的发展。

  • 移动HTML5挑战何在?

    当HTML5出现时,许多开发者和应用架构师视之为创建平台独立应用、简化你的设备支持以及当新的移动设备OS版本发布时减少应用相关问题的机会。