【Javascript语言精粹】笔记摘要

  现在大部分编译语言中都流行要求强类型。其原理在于强类型允许编译器在编译时检测错误。我们能越早检测和修复错误,付出的代价越小。Javascript是一门弱类型的语言,所以Javascript编译器不能检测出类型错误。

  NaN是一个数值,它表示一个不能产生正常结果的运算结果。NaN不等于任何值,包括它自己。可以用函数isNaN(number)检测NaN。

  Infinity表示所有大于1.79769313486231570e+308的值。

  /运算符可能会产生一个非整数结果,即使两个运算数都是整数。

  对象字面量是一种可以方便地按指定规格创建新对象的表示法。

  对象通过引用来传递。它们永远不会被复制。

  Javascript中的函数就是对象。对象是“名/值”对的集合并拥有一个连到原型对象的隐藏连接。对象字面量产生的对象连接到Object.prototype。函数对象连接到Function.prototype(该原型对象本身连接到Object.prototype)。每个函数在创建时会附加两个隐藏属性:函数的上下文和实现函数行为的代码。

  函数的变量不像普通的变量那样将被初始化为undefined,而是在该函数被调用时初始化为实际提供的参数的值。

  调用一个函数会暂停当前函数的执行,传递控制权和参数给新函数。除了声明时定义的形式参数,每个函数还接收两个附加的参数:this和arguments。

  参数this在面向对象编程中非常重要,它的值取决于调用的模式。

arguments并不是一个真正的函数。它只是一个“类似数组”的对象。arguments拥有一个length属性,但它没有任何数组的方法。

  模块模式的一般形式是:一个定义了私有变量和函数的函数;利用闭包创建可以访问私有变量和函数的特权函数;最后返回这个特权函数,或者把它们保存到一个可访问的地方。

在大多数语言中,一个数组的所有元素都要求是相同的类型。Javascript允许数组包含任意混合类型的值。

  每个数组都有一个length属性。和大多数其他语言不同,Javascript数组的length是没有上届的。如果用大于或等于当前length的数字作为下标来存储一个元素,那么length值会被增大以容纳新元素,不会发生数组越界错误。而把length设小将导致素有下标大于等于新length的属性被删除。

函数方法
方法名 意义
array.contact(item...)

contact方法产生一个新数组,它包含一份array的浅复制并把一个或

多个参数item附加在其后。如果参数item是一个数组,那么它的每个元

素会被分别添加。与其功能类似的有array.push(item...)

array.join(separator)

join方法把一个array构造成一个字符串。它先把array中的每个元素构

造成一个字符串,接着用一个separator分隔符把它们连接在一起。默

认的separator是逗号。

array.pop()

pop和push方法使得数组array可以像堆栈一样工作。pop方法移除array中

的最后一个元素并返回该元素。如果该array是empty,它会返回undefined。

array.push(item...) 

push方法把一个或多个参数item附加到一个数组的尾部。和contact方法

不同的是,它会修改array,如果参数item是一个数组,它会把参数数组

作为单个元素整个添加到数组中,并返回这个array的新长度值。

array.reverse() reverse方法反转array里的元素的顺序,并返回array本身。
array.shift()

shift方法移除数组array中的第1个元素并返回该元素。如果这个数

组array是空的,它返回undefined。

array.slice(start,end)

slice方法对array中的一段做浅复制。首先复制array[start],一直

复制到array[end]为止。end参数是可选的,默认值是该数组的长度

array.length。

array.sort(comparefn)

sort方法对array中的内容进行排序。它把要被排序的元素都视为字符串,

所以不能正确地给一组数字排序。

array.splice(start,deleteCount,item...)

splice方法从array中移除一个或多个元素,并用新的item替换它们。

参数start是从数组array中移除元素的开始位置。参数deleteCount是

要移除的元素个数。如果有额外的参数,那些item会插入到被移除元

素的位置上。它返回一个包含被移除元素的数组。

array.unshift(item...)

unshift方法像push方法一样,用于把元素添加到数组中,但它是

把item插入到array的开始部分而不是尾部。它返回array的新的length。

function.apply(thisArg,argArray)

apply方法调用function,传递一个会被绑定到this上的对象和一个

可选的数组作为参数。

number.toExponential(fractionDigits)

toExponential方法把这个number转换成一个指数形式的字符串。可

选参数fractionDigits控制其小数点后的数字位数。它的值必须在0~20。

number.toFiexed(fractionDigits)

toFiexed方法把这个number转换成为一个十进制数形式的字符串。可

选参数fractionDigits控制其小数点后的数字位数。它的值必须在

0~20,默认为0。

number.toPrecision(precision)

toPrecision方法把这个number转换成为一个十进制形式的字符串。可

选参数precision控制数字的精度。它的值必须在0~21。

number.toString(radix)

toString方法把这个number转换成为一个字符串。可选参数radix控

制基数。它的值必须控制在2~36。默认的radix是以10为基数的。

object.hasOwnProperty(name)

如果这个object包含一个名为name的属性,那么hasOwnProperty方法

返回true。原型链中的同名属性是不会被检查的。这个办法对name就

是“hasOwnProperty”时不起作用,此时会返回false。

regexp.exec(string)

exec方法是使用正则表达式的最强大(和最慢)的方法。如果它成功地

匹配regexp和字符串string,它会返回一个数组。如果匹配失败,它会返回null。

regexp.test(string)

test方法是使用正则表达式的最简单(和最快)的方法。如果该regexp

匹配string,它返回true;否则,它返回false。不要对这个方法使用g标识。

string.charAt(pos)

charAt方法返回在string中pos位置处的字符。如果pos小于0或者大于等

于字符串的长度string.length,它会返回空字符串。Javascript没有字

符类型。这个方法返回的结果是一个字符串。

string.charCodeAt(pos)

charCodeAt方法同charAt一样,只不过它返回的不是一个字符串,而是以

整数形式表示的在string中的pos位置处的字符的字符码位。如果pos小于

0或大于字符串的长度string.length,它返回NaN。

string.concat(string...)

concat方法把其他的字符串连接在一起来构造一个新的字符串。它很少被

使用,因为用+运算符更为方便。

string.indexOf(searchString,position)

indexOf方法在string内查找另一个字符串searchString。如果它被找到,

返回第1个匹配字符的位置,否则返回-1.可选参数position可设置从

string的某个指定位置开始查找。

string.lastIndexOf(searchString,position)

lastIndexOf方法和indexOf方法类似,只不过它是从该字符串的末尾开始

查找而不是从开头。

string.localeCompare(that)

localeCompare方法比较两个字符串。如果比较字符串的规则没有详细说明。

如果string比字符串that小,那么结果为负数。如果它们使相等的,那么

结果为0。这类似于array.sort比较函数的约定。

string.match(regexp)

match方法让字符串和一个正则表达式进行匹配。它根据g表示来决定如何进

行匹配。如果没有g标识,那么调用string.match(regexp)的结果与调用

regexp.exec(string)的结果相同。如果regexp带有g标识,那么它生成一个

包含所有匹配(除捕获分组之外)的数组。

string.replace(searchValue,replaceValue)

replace方法对string进行查找和替换操作,并返回一个新的字符串。参数

searchValue可以是一个字符串或一个正则表达式对象。如果它是一个字符串,

那么searchValue只会在第1次出现的地方被替换。如果searchValue是一个正

则表达式并且带有g标识,它会替换所有的匹配。如果没有带g标识,它会仅替

换第1个匹配。

string.search(regexp)

search方法和indexOf方法类似,只是它接收一个正则表达式对象作为参数而

不是一个字符串。如果找到匹配,它返回第1个匹配的首字符位置,如果没有

找到匹配,则方法-1。此方法会忽略g标识,且没有position参数。

string.slice(start,end)

slice方法复制string的一部分来构造一个新的字符串。如果start参数是负数,

它将与string.length相加。end参数是可选的,且默认值是string.length。

如果end参数是负数,那么它将与string.length相加。end参数等于要去的最

后一个字符的位置值加上1。要想得到从位置p开始的n个字符,就用

string.slice(p,p+n)。同类的方法有string.substring和array.slice。

string.split(separator,limit)

split方法把这个string分割成片段来创建一个字符串数组。可选参数limit

可以限制被分割的片段数量。separator参数可以是一个字符串或一个正则表达式。

string.substring(start,end) substring的用法和slice方法一样,只是它不能处理负数的参数。
string.toLocaleLowerCase()

toLocaleLowerCase方法返回一个新字符串,它使用本地化的规则把这个

string中的所有字母转换为小写格式。这个方法主要用在土耳其语上。

string.toLocaleUpperCase()

toLocaleUpperCase方法返回一个新字符串,它使用本地化的规则把这个

string中的所有字母转换为大写格式。这个方法主要用在土耳其语上。

string.toLowerCase()

toLowerCase方法返回一个新的字符串,这个string中的所有字母都被转

换为小写格式。

string.toUpperCase()

toUpperCase方法返回一个新的字符串,这个string中的所有字母都被转

换为大写格式。

string.fromCharCode(char...) fromCharCode函数根据一串数字编码返回一个字符串。
上一篇:linux挂载共享文件夹


下一篇:--<读书笔记三>之replace()与正则