一、富有表现力的JavaScript
第一章:富有表现力的JavaScript
1.1 JavaScript的灵活性
1.2 弱类型语言
1.3 函数是一等对象
1.4 对象的易变性
1.5 继承
1.6 JavaScript中的设计模式
1.7 小结
1.1 JavaScript的灵活性
JavaScript最强大的特性是其灵活性。作为JavaScript程序员,只要你愿意,可以把程序写得很简单,也可以很复杂。这种语言也支持多种不同的编程风格。你既可以采用函数式编程风格,也可以采用更复杂一点的面向对象编程风格。
1.2 弱类型语言
JavaScript中有3种原始类型:布尔型、数值型、和字符串类型。此外,还有对象类型和包含可执行代码的函数类型。最后,还有空类型(null)和为定义类型(undefined) 这两种类型。原始数据类型按值传送(递),而其他数据类型则按引用传送(递)。
toString方法可以把数值或布尔值变为字符串。
parseFloat和parseInt函数可以把字符串变成数值
双重“非”操作可以把字符串或数值变为布尔值 var bool = !!num;
1.3函数是一等对象
JavaScript中函数可以存储在变量中,可以作为参数传递给其他函数,可以作为返回值从其他函数传出,还可以运行时进行构造。
匿名函数示例:
// An anonymous function, executed immediately.
(function(){
var foo = 10;
var bar = 2;
alert(foo * bar);
})();
(function(foo , bar){
alert(foo * bar);
})(10,2);
匿名函数最有趣的用途是用来创建闭包。闭包(closure)是一个受到保护的变量空间,由内嵌函数生成。
创建类的私用(private)变量原理:
JavaScript具有函数级的作用域。这意味着定义在函数内部的变量在函数外部不能被访问。JavaScript的作用域又是词法性质的(lexically scoped)。这意味着函数运行在定义它的作用域中,而不是在调用它的作用域中。把这两个因素结合起来,就能通过把变量包裹在匿名函数中而对其加以保护。
1.4 对象的易变性
在JavaScript中可以为函数添加属性,也可以对先前定义的类和实例化的对象进行修改:
内省概念:可以在运行时检查对象所具有的属性和方法,还可以使用这种信息动态实例化类和执行其方法。
JavaScript大多用来模仿传统的面向对象特性的技术都依赖于对象的易变性和反射。
1.5 继承
JavaScript使用的是基于对象的原型示(prototypal)继承,它可以用来模仿基于类的继承。
1.6 JavaScript中的设计模式
JavaScript使用设计模式主要有如下原因:
1) 可维护性。有助于减低模块间的耦合程度。
2) 沟通。为处理不同类型的对象提供了一套通用的术语。
3) 性能。提高程序的运行速度,减少需要传送到客户端的代码量。最重要的例子是享元模式和代理模式。
一、富有表现力的JavaScript的更多相关文章
- 【总结】富有表现力的JavaScript
1.JavaScript的灵活性 JavaScript是目前最流行.应用最广泛的语言之一,它是一种极富表现力的语言,它具有C家族语言所罕见的特性.这种语言允许我们使用各种方式来完成同一个任务或者功能, ...
- 富有表现力的javascript
1.javascript的灵活性,你可以把它写的很简单,也可以写的很复杂,简直就是随心所欲: 2.javascript是弱类型语言,定义变量的时候不用声明变量类型,不声明类型,并不是说,javascr ...
- 《JavaScript设计模式》笔记之第一、二章:富有表现力的JavaScript 和 接口
第一章 创建一个类 方法一: var Anim = function() { ... }; Anim.prototype.start = functi ...
- JS设计模式——1.富有表现力的JS
创建支持链式调用的类(构造函数+原型) Function.prototype.method = function(name, fn){ this.prototype[name] = fn; retur ...
- 8款极具表现力的jQuery/CSS3网页菜单
上一篇我向大家分享了7款效果震憾的HTML5应用组件,今天主要来分享一下CSS3网页菜单,因为在一个网站中,菜单起着举足轻重的作用,所以作为WEB开发人员,我们有必要将网站的菜单设计得尽量完美,下面向 ...
- 充满想象力的 JavaScript 物理和重力实验
在这个列表中挑选了9个物理和重力实验,用来展示 Javascript 的强大.几年前,所有这些实验都必须使用 Java 或 Flash 才能做.在下面这些惊人的例子中,就个人而言,我比较喜欢仿真布料的 ...
- 9个充满想象力的 JavaScript 物理和重力实验
在这个列表中挑选了9个物理和重力实验,用来展示 Javascript 的强大.几年前,所有这些实验都必须使用 Java 或 Flash 才能做.在下面这些惊人的例子中,就个人而言,我比较喜欢仿真布料的 ...
- 富有魅力的git stash
git stash 会把当前的改动暂时搁置起来, 也就是所谓的git 暂存区. 你可以执行 git stash list 来查看你所有暂存的东东. 也可以 git stash apple ** 来拿下 ...
- Stylus-富有表现力的、动态的、健壮的CSS
今天总结一下Stylus记一些常用的也是最基本的用法 一. 选择器 Stylus是基于缩进的这让我们可以更快捷的编写css比如 body { margin:; paddind:; font-size ...
随机推荐
- Haffman算法(C++)
Huffman编码,C++实现,只是为了说明大致的思路,还有很多不完美之处,比如在输入数据超出限制等条件下会出现错误. #include<iostream> #include<str ...
- PowerDesigner使用方法小结
PowerDesigner多用来进行数据库模型设计,具有SQL语句自动生成等功能.当然,也有不少缺点,比如团队分享. 一.设置PowerDesigner模型视图中数据表显示列 1.Tools-Disp ...
- SQL SERVER中变量的定义、赋值与使用
本文面向对SQL SERVER中变量操作不熟悉的用户,希望能使他们在看完本文后能对变量操作有具体和全面的认识. 在学习SQL SERVER的过程中,很多时候需要对某些单独的值进行调试,这时就需 ...
- iOS多态 动态绑定
多态和动态绑定是为了解决父类调用子类的问题 首先,声明三个类aa bb cc 都继承于fist类 #import <Foundation/Foundation.h> @interface ...
- ios文本常见属性
文本属性Attributes 1.NSKernAttributeName: @10 调整字距 kerning 字距调整 2.NSFontAttributeName : [UIFont systemFo ...
- Struts2核心包
Commons-logging.jar -------------- 用于通用日志处理 Freemarker.jar -------------- 表现层框架,定义了struts2的可视组 ...
- MySQL函数笔记
MySQL函数笔记 日期函数 SELECT t1.xcjyrq, t1.* FROM view_sbxx t1 WHERE t1.syzt ; SELECT t1.xcjyrq, t1.* FROM ...
- java web项目修改项目名称
前几天在网上下了个项目,感觉名字长,所以想把项目改名字. 把项目导入到myeclipse中,将项目改名后, 还需要选中项目右键,properties ,修改项目的Context Root的名字.
- meta的属性详解
引言 您的个人网站即使做得再精彩,在“浩瀚如海”的网络空间中,也如一叶扁舟不易为人发现,如何推广个人网站,人们首先想到的方法无外乎以下几种: ● 在搜索引擎中登录自己的个人网站 ● 在知名网站加入你个 ...
- python 内置错误类型 Built-in Exceptions
BaseException +-- SystemExit +-- KeyboardInterrupt +-- GeneratorExit +-- Exception +-- StopIteration ...