- 浏览: 2160491 次
- 性别:
- 来自: 合肥
文章分类
- 全部博客 (401)
- Agile (16)
- Apache Commons (3)
- Architecture (8)
- DB.MongoDB (5)
- DB.Mysql (3)
- DB.Oracle (34)
- DirectoryService (1)
- DotNet (1)
- English (3)
- Groovy (0)
- Html (28)
- Java (67)
- Java.Aixs (7)
- Java.Cache (2)
- Java.jPBM (1)
- Java.Resin (6)
- Java.Spring (4)
- Java.Struts2 (5)
- Java.Tomcat (16)
- Javascript (45)
- Javascript.Google Map (2)
- Javascript.Jquery (8)
- Life (15)
- Maven&Ant (4)
- Network (5)
- OS.Linux (45)
- OS.Windows (10)
- OS.Windows.Office (1)
- PlayFramework (15)
- Python (28)
- Reading notes (11)
- Security (13)
- Server.Apache (3)
- Server.Nginx (7)
- Test (6)
- Tool (15)
- Work.Solution (15)
- Other (20)
- SSO&CAS&Identity (13)
最新评论
-
hutuxiansheng123:
防火墙、Iptables、netfilter/iptables、NAT 概述 -
dacoolbaby:
非常棒的正则表达式,非常适用。万分感谢。
用python分析nginx的access日志 -
loot00:
您好! 我也遇到了相同的错误信息。我是用f_link_lob ...
LOB variable no longer valid after subsequent fetch -
feihangchen:
@OnApplicationStop public clas ...
Play framework 1.2.3 Jobs定时任务、异步任务、引导任务、触发任务、关闭任务 -
洞渊龙王:
谢谢了
www.w3.org被qiang导致logback报错:Connect reset
JavaScript 函数:
函数包含一组语句,他们是JavaScript的基础模块单元,用于代码复用、信息隐藏和组合调用。
函数用于指定对象的行为。
函数对象Functions:
在JavaScript中函数就是对象。对象是“键值”对的集合并拥有一个连接到原型对象的隐藏连接。
对象字面量产生的对象连接到Object.prototype。函数对象连接到Function.prototype(该原型对象本身连接到Object.prototype)。
每个函数在创建时都拥有两个附加属性:函数的上下文和实现函数行为的代码。
每个函数对象在创建时也随带有一个prototype属性,它的值是一个拥有constructor属性且值即为该函数的对象。
函数字面量Function Literal:
var add = function(a, b) {return a + b;};
通过函数字面量创建的函数对象包含一个连到外部上下文的连接,这被称为闭包。
调用Invocation:
调用一个函数将暂停当前函数的执行,传递控制权和参数给新函数。除了声明时定义的形式参数,每个函数接收两个附加的属性:this和arguments。
参数this在面向对象的编程中非常重要,它的值取决于调用的模式。JavaScript中一共有4中调用模式:方法调用模式、函数调用模式、构造器调用模式和apply调用模式。这些模式在如何初始化关键参数this上存在差异。
调用运算符():跟在任何产生一个函数值的表达式之后的一对圆括号。当实际参数(arguments)的个数与形式参数(parameters)的个数不匹配时,不会导致运行时错误。
方法调用模式:The Method Invocation Pattern
当一个函数被保存为对象的一个属性时,我们称它为一个方法。当一个方法被调用时,this被绑定到该对象。如果一个调用表达式包含一个属性存取表达式(即一个.号表达式或[subscript]下标表达式),那么它被当作一个方法来调用。
方法可以使用this去访问对象,所以它能从对象中取值或修改该对象。this到对象的绑定发生在调用的时候。这个“超级”迟绑定(very late binding)使得函数可以对this高度复用。通过this可取得他们所属对象的上下文的方法称为公共方法。
函数调用模式:The Function Invocation Pattern
当一个函数并非一个对象的属性时,那么它被当作一个函数来调用。
var sum = add(3,4);
当函数以此模式调用时,this被绑定到全局对象。
// 给myObject增加一个double方法(上面myObject对象已经有了属性value和方法increasement)
myObject.double = function(){
var that = this;
var helper = function() {
that.value = add(that.value, that.value);
};
// The Function Invocation Pattern
helper();
}
// The Method Invocation Pattern
myObject.double();
document.writeln(myObject.getValue());
构造器调用模式:The Constructor Invocation Pattern
JavaScript是一门基于原型继承的预言。这意味着对象可以直接从其他对象继承属性。该语言是无类别的。这偏离了当今编程的主流。当今大多数语言都是基于类的语言。尽管原型继承有着强大的表现力,但他并不被广泛理解。JavaScript本身对其原型的本质也缺乏信心,所以它提供了一套和基于类的语言类似的对象构建语法。
如果在一个函数前面带上new来调用,那么将创建一个隐藏连接到该函数的prototype成员的新对象,同时this将会被绑定到那个新对象上。
结合new前缀调用的函数被称为构造器函数。按照约定,他们保存在以大写格式命名的变量里。
Apply调用模式:The Apply Invocation Pattern
因为JavaScript是一门函数式的面向对象编程语言,所以函数可以拥有方法。
apply方法让我们构建一个参数数组并用其去调用函数。它也允许我们选择this的值。
apply方法接收两个参数。第一个参数将被绑定给this。第二个就是一个参数数组。
参数Arguments:
当函数被调用时,会得到一个“免费”奉送的变量arguments数组。通过它函数可以访问所有它被调用时传递给它的参数列表,包括那些没有被分配给函数声明时定义的形式参数的多余参数。这使得编写一个无须指定参数的函数成为可能。
arguments是一个类似数组(array-like)的对象,他并不是真正的数组。有length属性,但没有数组的其他方法。
返回Return:
一个函数总是会返回一个值,如果没有指定返回值,则返回undefined。
如果函数以在前面加上new前缀的方法来调用,且返回值不是一个对象,则返回this(该新对象)。
异常Exceptions:try catch throw
给类型增加方法:
JavaScript允许给语言的基本类型增加方法(通过prototype)。
Function.prototype.method = function (name, method) {if(this.prototype[name]){this.prototype[name] = method; return this;}};
通过给Function.prototype对象增加一个method方法,我们就不必键入prototype这个属性名。
Number.method('integer', function () {return Math[this < 0 ? 'ceiling' : 'floor'](this);});
String.metho('trim', function () {return this.replace('/^\s+|\s+$/g','');});
通过给基本类型增加方法,我们可以大大提高语言的表现力。因为JavaScript是原型继承的动态本质(在属性访问符调用时,一层一层检查),新的方法立刻被赋予到所有的值(对象)上,哪怕值(对象)是在方法被创建之前就创建好了。
另一个需要注意的是for in 语句在原型上时表现很糟糕。可以用hasOwnProperty方法筛选出继承而来的属性。
递归Recursion:汉诺塔难题
作用域Scope:
在编程语言中,作用域控制着变量与参数的可见性和生命周期。对程序员来说这是一个重要的帮组,因为它减少了名称冲突,并且提供了自动内存管理。
闭包Closure:
作用域的好处是内部函数可以访问定义在它们外部的参数和变量(除了this和arguments)。
回调Callbacks:
模块Module:
我们可以使用函数和闭包来构造模块。模块是一个提供接口却隐藏状态与实现的函数或对象。通过使用函数去产生模块,我们几乎可以完全摒弃全局变量的使用,从而缓解这个JavaScript的最为糟糕的特性之一所带来的影响。
模块的一般形式:一个定义了私有变量和函数的函数;利用闭包创建可以访问私有变量和函数的特权函数。最后返回特权函数,或者把他们保存到一个可以访问到的地方。
级联Cascade:
有一些方法没有返回值。如果我们让这些方法返回this而不是undefined,就可以启动级联(例子:jQuery的链式调用)。
套用Curry:
记忆Memoization:
函数可以用对象去记住先前的结果,从而能避免无谓的运算。这种优化被称为记忆。
函数包含一组语句,他们是JavaScript的基础模块单元,用于代码复用、信息隐藏和组合调用。
函数用于指定对象的行为。
函数对象Functions:
在JavaScript中函数就是对象。对象是“键值”对的集合并拥有一个连接到原型对象的隐藏连接。
对象字面量产生的对象连接到Object.prototype。函数对象连接到Function.prototype(该原型对象本身连接到Object.prototype)。
每个函数在创建时都拥有两个附加属性:函数的上下文和实现函数行为的代码。
每个函数对象在创建时也随带有一个prototype属性,它的值是一个拥有constructor属性且值即为该函数的对象。
函数字面量Function Literal:
var add = function(a, b) {return a + b;};
通过函数字面量创建的函数对象包含一个连到外部上下文的连接,这被称为闭包。
调用Invocation:
调用一个函数将暂停当前函数的执行,传递控制权和参数给新函数。除了声明时定义的形式参数,每个函数接收两个附加的属性:this和arguments。
参数this在面向对象的编程中非常重要,它的值取决于调用的模式。JavaScript中一共有4中调用模式:方法调用模式、函数调用模式、构造器调用模式和apply调用模式。这些模式在如何初始化关键参数this上存在差异。
调用运算符():跟在任何产生一个函数值的表达式之后的一对圆括号。当实际参数(arguments)的个数与形式参数(parameters)的个数不匹配时,不会导致运行时错误。
方法调用模式:The Method Invocation Pattern
当一个函数被保存为对象的一个属性时,我们称它为一个方法。当一个方法被调用时,this被绑定到该对象。如果一个调用表达式包含一个属性存取表达式(即一个.号表达式或[subscript]下标表达式),那么它被当作一个方法来调用。
方法可以使用this去访问对象,所以它能从对象中取值或修改该对象。this到对象的绑定发生在调用的时候。这个“超级”迟绑定(very late binding)使得函数可以对this高度复用。通过this可取得他们所属对象的上下文的方法称为公共方法。
函数调用模式:The Function Invocation Pattern
当一个函数并非一个对象的属性时,那么它被当作一个函数来调用。
var sum = add(3,4);
当函数以此模式调用时,this被绑定到全局对象。
// 给myObject增加一个double方法(上面myObject对象已经有了属性value和方法increasement)
myObject.double = function(){
var that = this;
var helper = function() {
that.value = add(that.value, that.value);
};
// The Function Invocation Pattern
helper();
}
// The Method Invocation Pattern
myObject.double();
document.writeln(myObject.getValue());
构造器调用模式:The Constructor Invocation Pattern
JavaScript是一门基于原型继承的预言。这意味着对象可以直接从其他对象继承属性。该语言是无类别的。这偏离了当今编程的主流。当今大多数语言都是基于类的语言。尽管原型继承有着强大的表现力,但他并不被广泛理解。JavaScript本身对其原型的本质也缺乏信心,所以它提供了一套和基于类的语言类似的对象构建语法。
如果在一个函数前面带上new来调用,那么将创建一个隐藏连接到该函数的prototype成员的新对象,同时this将会被绑定到那个新对象上。
结合new前缀调用的函数被称为构造器函数。按照约定,他们保存在以大写格式命名的变量里。
Apply调用模式:The Apply Invocation Pattern
因为JavaScript是一门函数式的面向对象编程语言,所以函数可以拥有方法。
apply方法让我们构建一个参数数组并用其去调用函数。它也允许我们选择this的值。
apply方法接收两个参数。第一个参数将被绑定给this。第二个就是一个参数数组。
参数Arguments:
当函数被调用时,会得到一个“免费”奉送的变量arguments数组。通过它函数可以访问所有它被调用时传递给它的参数列表,包括那些没有被分配给函数声明时定义的形式参数的多余参数。这使得编写一个无须指定参数的函数成为可能。
arguments是一个类似数组(array-like)的对象,他并不是真正的数组。有length属性,但没有数组的其他方法。
返回Return:
一个函数总是会返回一个值,如果没有指定返回值,则返回undefined。
如果函数以在前面加上new前缀的方法来调用,且返回值不是一个对象,则返回this(该新对象)。
异常Exceptions:try catch throw
给类型增加方法:
JavaScript允许给语言的基本类型增加方法(通过prototype)。
Function.prototype.method = function (name, method) {if(this.prototype[name]){this.prototype[name] = method; return this;}};
通过给Function.prototype对象增加一个method方法,我们就不必键入prototype这个属性名。
Number.method('integer', function () {return Math[this < 0 ? 'ceiling' : 'floor'](this);});
String.metho('trim', function () {return this.replace('/^\s+|\s+$/g','');});
通过给基本类型增加方法,我们可以大大提高语言的表现力。因为JavaScript是原型继承的动态本质(在属性访问符调用时,一层一层检查),新的方法立刻被赋予到所有的值(对象)上,哪怕值(对象)是在方法被创建之前就创建好了。
另一个需要注意的是for in 语句在原型上时表现很糟糕。可以用hasOwnProperty方法筛选出继承而来的属性。
递归Recursion:汉诺塔难题
作用域Scope:
在编程语言中,作用域控制着变量与参数的可见性和生命周期。对程序员来说这是一个重要的帮组,因为它减少了名称冲突,并且提供了自动内存管理。
闭包Closure:
作用域的好处是内部函数可以访问定义在它们外部的参数和变量(除了this和arguments)。
回调Callbacks:
模块Module:
我们可以使用函数和闭包来构造模块。模块是一个提供接口却隐藏状态与实现的函数或对象。通过使用函数去产生模块,我们几乎可以完全摒弃全局变量的使用,从而缓解这个JavaScript的最为糟糕的特性之一所带来的影响。
模块的一般形式:一个定义了私有变量和函数的函数;利用闭包创建可以访问私有变量和函数的特权函数。最后返回特权函数,或者把他们保存到一个可以访问到的地方。
级联Cascade:
有一些方法没有返回值。如果我们让这些方法返回this而不是undefined,就可以启动级联(例子:jQuery的链式调用)。
套用Curry:
记忆Memoization:
函数可以用对象去记住先前的结果,从而能避免无谓的运算。这种优化被称为记忆。
发表评论
-
knockoutjs 变量引用方式、怪异问题排查
2012-08-24 15:01 1538问题:使用knockoutjs的过程中,有时候会发现一些奇怪的 ... -
Javascript Closures闭包、为什么要闭包(闭包作用)、变量作用域
2012-08-10 14:00 2123转自:http://www.jb51.net/article/ ... -
Javascript函数、变量的初始化顺序、Javascript上下文环境
2012-08-07 15:57 1855参考:Initialization of functions ... -
Javascript函数:函数声明、函数表达式、NFE被命名的函数表达式
2012-08-07 15:45 1184参考: functions-declaration ... -
Javascript alert object、JavaScript版本迷局
2012-07-30 15:18 24711,使用alert(object.toSource()) 注 ... -
knockoutjs -- if 绑定
2012-06-14 16:22 13032参考:http://knockoutjs.com/ ... -
jquery Fixture 插件
2012-06-07 10:16 1511jQuery.Fixture插件是一个包含在javascrip ... -
CoffeeScript
2012-04-20 15:05 1820CoffeeScript是一个被编译成javascript的小 ... -
javascriptmvc 3.2.2
2012-04-19 17:10 1362JavaScriptMVC是一个以MIT协议开源的Javasc ... -
knockoutjs -- all built-in buildings
2012-04-16 16:12 1003所有可用的binding值 文字和显示:visible, t ... -
knockoutjs -- applyBinding & Observables
2012-04-16 15:35 4496applyBindings ko.applyBindings( ... -
knockoutjs -- load save data(与服务器进行数据交互) & binding绑定
2012-04-10 15:51 6054和服务器交互数据: Knockout 是一纯javascrip ... -
使用ajax和history.pushState无刷新改变页面URL onpopstate(转)
2012-04-10 13:20 11559var htmlData1 = $.ajax( ... -
knockoutjs 单页引用 客户端重定向(location.hash history.pushState)
2012-04-10 10:33 4396大部分现代的,相应的 ... -
knockoutjs foreach array绑定 表格 下拉框绑定
2012-04-09 16:04 11461动态表格使用observable arrays and the ... -
knockoutjs 静动态数据、行为绑定,计算属性及Sync同步更新 Value值更新事件控制
2012-04-09 15:24 9514data-bind="text: firstName ... -
knockoutjs -- 使用Model-View-ViewModel (MVVM) 模式简化动态Javascript UI
2012-04-09 14:35 3812Knockout 是个JavaScript library,帮 ... -
jquery-validation-1.9.0
2012-04-07 15:52 4313jQuery验证插件: 简单高 ... -
textarea文本框限制输入文本数量(Firefox,Chrome,Safari)、Javascript取得字符ASCII码值、常见字符ASCII码值
2012-04-07 10:35 2269// focus用来对应Chrome浏览器往文本框拖入值 ... -
JavaScript高级程序设计读书笔记-事件
2011-11-09 16:53 1488JavaScript和HTML之间的交互是通过用户和浏览器操作 ...
相关推荐
《JavaScript语言精粹》这本书是深入理解这一语言的宝贵资源,它涵盖了JavaScript的核心概念和技术,旨在帮助读者掌握这门语言的精髓。 在描述中提到的"JavaScript语言精粹 包含pdf 与 epub"表明,这本书提供了两种...
《JavaScript语言精粹》修订版还涵盖了JavaScript的最新发展,例如ES6及后续版本的新特性,如箭头函数、类、模板字符串、解构赋值等。此外,Douglas Crockford对语言中的一些"坏部分"(如with关键字和全局变量)进行...
JavaScript笔记-个人笔记-X-mind格式
JavaScript语言精粹 中文版 共两部分
这本书《JavaScript语言精粹》无疑是深入理解和掌握这门语言的重要参考资料。它旨在帮助开发者掌握JavaScript的核心概念,提高编程技能,并理解如何写出高效、可维护的代码。 《JavaScript语言精粹》可能会涵盖以下...
《JavaScript语言精粹 修订版》是一本深受前端开发者喜爱的经典教材,专注于讲解JavaScript的核心概念和最佳实践。这本书深入浅出地介绍了JavaScript的精髓,帮助读者掌握这门强大的脚本语言,尤其对于前端开发人员...
"JavaScript语言精粹(修订版)"是一本深入探讨JavaScript编程精髓的书籍,旨在帮助开发者掌握其核心概念、最佳实践以及常见陷阱。这本书对初学者和经验丰富的开发者都具有很高的价值,能够提升对JavaScript的理解和...
相反,应该利用那些有实际用途和强大表达能力的特性,比如立即执行函数表达式(IIFE)、闭包、回调函数等,这些都是让JavaScript成为一门强大编程语言的关键元素。 在实际开发中,开发者应该致力于编写简洁、可读性...
JavaScript语言精粹,已经编辑好书签,分享给各位初学者
JavaScript语言精粹_修订版.pdf
"JavaScript语言精粹_修订版【高清】带书签 PDF"是一本专门为JavaScript初学者和进阶者编写的指南,旨在帮助读者深入理解并掌握这种强大的脚本语言。 该书修订版可能包含对原版内容的更新和优化,以适应不断发展的...