摘要: 学习javascript的目标是用一种语言解决前端和后端开发,前端js,后端node.js。N多年前开发WEB应用,用过HTML\CSS\JS,只是没有现在那么炫的效果,起辅助作用,总算有了基础。重点是javascript的学习。设计的基本学习路线是:1、从“javascript语言核心”起步学习,从基础到高级逐步深入;2、学习HTML和CSS,HTML4已经没有问题,重点是HTML5;3、浏览器中的js和Node同步学习。目前进度:2013-11-20:结合《javascript权威教程》和《javascript高级教程》,已经完成javascript语言核心部分的学习。学习资料和书单:入门 阅读全文
posted @ 2013-11-20 21:32 LaoHoo 阅读(3028) 评论(0) 推荐(0) 编辑
摘要: 学习完javascript核心语法,就应该看看严格模式,严格模式从ECMAScript5提出。养成良好编码习惯是非常重要的,严格模式针对javascript过于灵活、不确定的状态,提出了更为严格的建议的规范约束,目前主流浏览器都已经支持,包括IE10,请参见支持列表。设立严格模式的目的- 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;- 消除代码运行的一些不安全之处,保证代码运行的安全;- 提高编译器效率,增加运行速度;- 为未来新版本的Javascript做好铺垫。在"严格模式"中,可能会有不一样的运行结果;一些在"正常模式" 阅读全文
posted @ 2013-11-20 17:28 LaoHoo 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 貌似WEB开发初期,相关脚本语言都是没有考虑到模块化和命名空间的,比如javascript、asp、php等,随着WEB开发规模越来越大,编程语言体系越来越成熟,模块化和命名空间成为必须的语言特性。遗憾的是,javascript目前还没有从语言层面对模块化和命名空间进行支持,但基于语言的灵活性,可以变通的实现。注:commonJS规范提出了模块化和命名空间规范,NodeJS实现了此规范。什么是模块?一般来讲,模块是一个独立的JS文件。模块文件可以包含一个类定义、一组相关类、一个实用函数库或者一些待执行的代码。模块化的目标是支持大规模的程序开发,处理分散源中代码的组装,并且能让代码正确运行,哪怕 阅读全文
posted @ 2013-11-19 14:50 LaoHoo 阅读(454) 评论(0) 推荐(0) 编辑
摘要: OOP的特性之一就是继承,只有实现了继承的语言才能称之为OOP,本篇将说明javasctipt如何使用继承。原型、构造函数和对象中的基于原型的继承概念虽然本地对象都继承自Object,但实际上,可以认为所有对象都是继承自原型。在JAVA中,定义了一个根对象Object,所有对象都从根对象继承而来,从而建立基于类的对象体系。那么我们也可以认为javascript中,定义了原型对象,所有类基于原型而建立了对象体系。这个继承过程是这样的:1、当定义函数(构造函数也是函数)的时候,就自动为其设置了一个原型属性,原型属性的值是原型对象,原型对象只有一个函数constructor,并指向关联的构造函数。2 阅读全文
posted @ 2013-11-18 01:01 LaoHoo 阅读(447) 评论(0) 推荐(0) 编辑
摘要: 前面讲到,javascript是基于原型的面向对象语言,本篇将对javascript中原型的理解,从而理解javascript如何构建对象体系。举个例子,基于类的对象和基于原型的对象构建方式区别在于:创建“人”这对象的时候,及鱼类的方式是定义人的模型,然后按照人的模型创建一个人。基于原型的方式是通过人的基因(原型)来创建一个人。原型的由来所有函数都有一个原型属性,当函数被定义的时候,原型自动创建和初始化,原型的初始化值是一个对象,该对象只有一个属性:constructor,该属性指向原型相关联的的构造函数。添加给原型对象的任何属性,都会被被构造函数初始化的对象的属性。对象从类实例化而来,类定义 阅读全文
posted @ 2013-11-14 21:28 LaoHoo 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 严格来说,javascript没有类,但为了便于理解,我们将类和对象当做同一个概念来说。javascript有很多种定义类的方式,这还真有点狗血,选择太多必然增加了语言的复杂度,所以我们需要评估、选择合适的方式。类或对象定义我们先看看JAVA类定义方式class Car { public String color = "blue"; public int doors = 4; public int mpg = 25; public Car(String color, int doors, int mpg) { this.color = color; this.doors = 阅读全文
posted @ 2013-11-13 13:59 LaoHoo 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 任何语言都有作用域,javascript的作用域非常的特殊,实现的是一个作用域链,要理解其对象和函数,不可避免需要先理解其作用域和作用域链。在函数章节,简单的描述了作用域链的概念,本篇尝试对其进行透彻的分析研究。变量作用域在第一篇讲述变量的时候,说到变量具有全局作用域和局部作用域。和其他语言相比,js没有块作用域,因此函数中变量的局部作用域在整个函数内部都是可访问的,而不管是在哪个代码块中。当变量申明时没有添加var关键字,就自动成为全局作用域变量,而不管它的位置。对象作用域在传统的面向对象程序设计中,主要关注于公用和私有作用域。公用作用域中的对象属性可以从对象外部访问,即开发者创建对象的实例 阅读全文
posted @ 2013-11-12 23:07 LaoHoo 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 前面一篇我们回顾了面向对象概念和JAVA的对象核心概念,但实际上,JAVA是一种基于类继承的面向对象语言,而javascript是基于原型的面向对象语言,我们就不纠结于基于类和基于原型的优劣,也不管它们的设计原理,我们只从使用的角度进行理解和说明。有些文章建议完全抛弃JAVA这种基于类面向对象,清空大脑,再去学习javascript这种基于原型的面向对象设计,但这是不可能的。这里有篇文章对此进行了阐述:http://www.ibm.com/developerworks/cn/web/1304_zengyz_jsoo/,大家可以去参考。javascript有三类对象类型:本地对象、内置对象和宿主 阅读全文
posted @ 2013-11-12 23:01 LaoHoo 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 这篇要谈的面向对象(OOP),OOP被普遍认识并应用,我的经历是从JAVA语言开始,javascript一直都说:我和JAVA没关系,但从前面的语法结构、运算符、标示符关键字等等几乎都与JAVA一样,起码来说是大量、甚至是为了迎合市场需求,完全照抄了JAVA,但其语言核心确实是两个完全不同的语言。但js确实是面向对象语言,因为它支持封装、聚集、继承和多态四个OOP基本特征。犀牛书对js的OOP讲解个人感觉不够直接易懂,以我多年来JAVA建立的严谨OOP思维,看函数章节时非常的头痛(OOP语言怎么会有这么麻烦的函数?),当看到对象章节,本以为会容易理解,结果几乎崩溃。但为了掌握这门语言,耐着性子 阅读全文
posted @ 2013-11-11 23:21 LaoHoo 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 所谓过程式编程(或函数式编程),最重要的语法就是函数,js虽然号称OOP语言,但实际上函式编程是更为常用且大家熟悉的编程方式。这里就几个重要概念进行说明。总结来说,函数是js语言的第一类对象,可以被调用、赋值、传递....函数定义function 函数名(参数1,参数2,参数3...){ 函数体语句 renturn 返回值;}说明:1、函数体return关键字指定返回值,因为是弱对象语言,因此不需要在定义中指定函数返回值,也可以没有return语句,返回值是undefined;2、参数不用指定类型,如果类型很重要,需要使用typeof方法进行检测。参数个数可变,且调用时个数可以不和参数个数.. 阅读全文
posted @ 2013-11-11 00:21 LaoHoo 阅读(384) 评论(0) 推荐(0) 编辑