随笔分类 - 《JavaScript权威指南学习》
摘要:function removeEmptyArrayEle(arr){ for(var i = 0; i < arr.length; i++) { if(arr[i] == undefined) { arr.splice(i,1); i = i - 1; // i - 1 ,因为空元素在数组下标 2
阅读全文
摘要:JS权威指南学习总结:http://www.cnblogs.com/ahthw/category/652668.html
阅读全文
摘要:js子集和扩展:http://www.cnblogs.com/ahthw/p/4298449.html ES6新增let和const关键字:http://www.cnblogs.com/telnetzhang/p/5639949.html JS中 var 和 let 关键字的区别:http://ww
阅读全文
摘要:内容要点: 1.什么是对象:JS权威指南学习总结-第六章 ,(有句话:一切都是对象) 2.什么面向对象 使用对象时,只关注对象提供的功能,不关注其内部细节,比如jQuery。面向对象是一种通用思想,并非只有编程中使用,任何事情都可以用。 3.JS中面向对象三大特征: 封装、继承、多态 4.JS自定义
阅读全文
摘要:内容要点: 介绍了三种用以检测任意对象的类的技术,instanceof运算符、constructor属性,以及构造函数的名字。 但每种技术都不甚完美,本节总结了鸭式辩型,这种编程哲学更加关注对象可以完成什么工作(它包含什么方法)而不是对象属于哪个类 一.instanceof运算符 1.左操作数是带检
阅读全文
摘要:内容要点: 一.JS中的类 1.JAVA或其他类似强类型 面向对象语言的 类成员的模样 实例字段:它们是基于实例的属性或变量,用以保存独立对象的状态。 实例方法: 它们是类的所有实例所共享的方法,由每个独立的实例调用 类字段:这些属性或变量是属于类的,而不是属于类的某个实例的。 类方法:这些方法是属
阅读全文
摘要:内容要点: 例9-1展示了在JS中定义类的其中一种方法。但这种方法并不常用,毕竟它没有定义构造函数,构造函数是用来初始化新创建的对象的。 使用关键字new来调用构造函数会自动创建一个新对象,因此构造函数本身只需初始化这个新对象的状态即可。 调用构造函数的一个重要特征是,构造函数的prototype属
阅读全文
摘要:内容要点: 一.JS类 在JS中,类的所有实例对象都从同一个原型对象上继承属性。因此,原型对象是类的核心。在例6.1 原型中定义了inherit()函数(通过原型继承创建一个新对象),这个函数返回一个新创建的对象,后者继承自某个原型对象。 如果定义一个原型对象,然后通过inherit()函数创建一个
阅读全文
摘要:内容要点: 一. 1.第六章详细介绍了JS对象,每个JS对象都是一个属性集合,相互之间没有任何联系。在JS中也可以定义对象的类,让每个对象都共享某些属性,这种"共享"的特性是非常有用的。 2.类的成员或实例都包含一些属性,用以存放或定义它们的状态,其中有些属性定义了它们的行为(通常称为方法)。这些行
阅读全文
摘要:内容要点: 可以将上次的计算结果缓存起来。在函数式编程当中,这中缓存技巧叫做 "记忆"。 需要注意的是,记忆只是一种编程技巧,本质上是牺牲算法的空间复杂度以换取更优的时间复杂度,在客户端JS中代码代码执行的时间复杂度往往成为瓶颈,因此在大多数场景下,这种牺牲空间换取时间的做法以提升程序执行效率的做法
阅读全文
摘要:内容要点: 本节讨论的是一种函数变换技巧,即把一次完整的函数调用拆成多次函数调用,每次传入的实参都是完整实参的一部分,每个拆分开的函数叫做不完全函数(partial function),每次函数调用叫做不完全调用(partial application),这种函数变换的特点是每次调用都返回一个函数,
阅读全文
摘要:内容要点: 所谓高阶函数(higher-order function)就是操作函数的函数,它接收一个或多个函数作为参数,并返回一个新函数。 例1: //这个高阶函数返回一个新的函数,这个新函数将它的实参传入f(),并返回f的返回值的逻辑非 function not(f){ return functi
阅读全文
摘要:内容要点: 和Lisp、Haskell不同,JS并非函数式编程语言,但在JS中可以像操控对象一样操控函数, 也就是说可以在JS中应用函数式编程技术。ES5中的数组方法(诸如map()和reduce())就可以非常适用于函数式编程风格。 一.使用函数处理数组 假设有一个数组,数组元素都是数字,我们想要
阅读全文
摘要:内容要点: 在JS程序中,函数是值。对函数执行typeof运算会返回字符串 "function",但是函数是JS中特殊的对象。因为函数也是对象,它们也可以拥有属性和方法,就像普通的对象可以拥有属性和方法一样。甚至可以用Function()构造函数来创建新的函数对象。 一.length属性 在函数体内
阅读全文
摘要:内容要点: 和其他大多数现代编程一样,JS也采用词法作用域,也就是说,函数的执行依赖于变量作用域,这个作用域是在函数定义时决定的,而不是函数调用时决定的。 为了实现这种词法作用域,JS函数对象的内部状态不仅包含函数的代码逻辑,还必须引用当前的作用域链。 闭包概念:函数对象可以通过作用域链相互关联起来
阅读全文
摘要:内容要点: 函数作用域的概念:在函数中声明的变量在整个函数体内都是可见的(包括在嵌套的函数中),在函数的外部是不可见的。不在任何函数内声明的变量是全局变量,在整个JS程序中都是可见的。 在JS中无法声明只在一个代码块内可见的变量的。(在客户端JS中这种说法不完全正确,比如,在有些JS的扩展中就可以使
阅读全文
摘要:内容要点: 函数可以定义,也可以调用,这是函数最重要的特性。函数定义和调用是JS的词法特性,对于其他大多数编程语言来说也是如此。然而在JS中,函数不仅仅是一种语法,也是值,也就是说,可以将函数赋值给变量,存储在对象的属性或数组的元素中,作为参数传入另外一个函数等。 一.理解JS中的函数 定义一个函数
阅读全文
摘要:内容要点: 一.可选形参 当调用函数的时候传入的实参比函数声明时指定的形参个数要少,剩下的形参都将设置为undefined值。 例如: //将对象o中可枚举的属性名追加至数组 //如果省略a,则创建一个新数组并返回这个新数组。 function getPropertyNames(o,/*option
阅读全文
摘要:内容要点: 1.函数表达式定义后立即调用: var tensquared = ( function(x){ return x*x ;}(10) ); 2.嵌套函数: 在JS里,函数可以嵌套在其他函数里。例如: function hypotenuse(a,b){ function square(x){
阅读全文
摘要:内容要点: 一.JS函数是参数化的:函数的定义会包括一个称为形参的标识符列表,这些参数在函数体中像局部变量一样工作。函数调用会为形参提供实参的值。函数使用它们实参的值来计算返回值,成为该函数调用表达式的值。除 了实参之外,每次调用还会拥有另外一个值 本次调用的上下文--这就是this关键字的值。 二
阅读全文