代码改变世界

ASP.NET AJAX学习笔记(2):javascript原生对象与扩展

2009-08-12 14:30  xiaosuo  阅读(416)  评论(0编辑  收藏  举报
 

Object

出现在所有对象中

toString() / toLocaleString() – 得到表示当前对象与环境无/有关的字符串

valueOf() – 返回表示该对象的value(大部分类型会覆盖这个方法)

hasOwnProperty(propertyName) – 对象上是否直接定义了某个属性

isPrototypeOf(obj) – obj是不是当前对象的prototype对象,顺着prototype链查找

propertyIsEnumerable(propertyName);

 

 

Array原生类型

length属性:数组长度,可读写

toString() / toLocaleString() – 返回逗号分割的字符串

concat([ item1 [ , item2 [ , … ] ] ]) 返回一个新数组,保存了原数组所有元素和所有的参数

push([ item1 [ , item2 [ , … ] ] ]) – 在数组尾添加一个或多个元素

pop – 从数组尾去除并返回元素

shift – 从数组头去除并返回元素

unshift([ item1 [ , item2 [ , … ] ] ]) – 在数组头添加一个或多个元素

join(separator) – 返回以separator作为分割符得到一个连接所有元素的的字符串

reverse() 将数组内所有元素逆转

sort(compareFunction) – 参数为一个方法,用于比较两个元素省略了参数则直接使用<, ==, >比较两个元素某属性是否可遍历

slice(start, end) – 返回新数组,不影响旧数组,包含从下标start开始到下标end-1的元素,如果省略end则包含从下标start开始至末尾的所有元素,如果参数为负数,则表示数组的倒数第几个下标(即下标为n + array.length,如果start元素在end元素之后或相同,则返回空数组

splice (start, deleteCount [ , item1 [ , item2[ , … ] ] ] ) 最灵活的方法,影响影响当前数组,从下标start的元素开始,删除deleteCount个元素,并在当前start位置开始插入剩余元素,删除元素:splice(2, 1),插入元素:splice(2, 0, "Hello", "World"),替换元素:splice(2, 1, “Hello”, “World”)不考虑prototype

 

Array原生类型的扩展

Array.enqueue(array, item) – “入队列操作,将item添加至array末尾。

Array.dequeue(array) – “出队列操作,返回并删除array的第一个元素。

Array.addRange(array, items) – items数组中所有元素添加至array末尾。

Array.contains(array, item) – 如果array中包含item元素,则返回true,否则返回false

Array.clear(array) 清除array中的所有元素。

Array.insert(array, index, item) – item插入至array中下标为index的位置。

Array.remove(array, item) – array中移除item元素。

Array.removeAt(array, index) – array中移除下标为index的元素。

Array.clone(array) – 返回一个与array相同的新数组。

Array.parse(value) 将表示数组的JSON字符串变为一个数组对象。

Array.indexOf(array, item, start) – 获得itemarray中的下标,从下标为start开始查找。如果array中没有item元素,那么返回-1

Array.add(array, item) – item添加至array末尾,它和Array.enqueue其实是同一个函数。

Array.forEach(array, method, instance) – instance为上下文this引用,将array中的每个元

素依次作为参数,循环调用method方法。

 

 

Error原生类型 表示错误对象

捕获方式:

– try { … throw new Error(…) } catch(e) { … }

理论上可以throw出任意对象

• Error对象IEFireFox公有属性

– message:错误信息

IE

– description:同message属性

– number:错误编号,只有脚本引擎抛出的错误才有该属性

• FireFox

– fileName:创建错误的文件     – lineNumber:创建错误对象的行号

stack:创建错误时的堆栈信息

 

Error原生类型的扩展

Error.create(message, errorInfo) 创建新的Error对象,Error对象的message属性设为true,errorInfo上的信息附加到Error对象

• Error.prototype.popStackFrame() Error对象整理出更优雅直观的信息(lineNumber, stack

对于IE无效,如果一个方法仅仅是返回Error对象而不是抛出对象,则在返回前应该调用该方法

 

Function原生类型

每个方法均为Function类型的实例typeof(Array) == typeof(Function) == “function”

方法调用时根据发起的对象来确定this上下文引用

• Function.prototype.apply(instance, args)

• Function.prototype.call(instance, [ arg1 [ ,arg2 [ , … ] ] ])

 

Function原生类型扩展

Function.createDelegate(instance, method) – 得到一个方法引用,执行它时则会调用method

方法,并且保证method方法的上下文this引用为instance

• Function.createCallback(method, context) – 得到一个方法引用,执行它时则会调用method

方法,并将context作为额外的参数传入

 

Boolean原生类型及其扩展

 

使用布尔值,而不要使用Boolean对象– truefalse,而不是new Boolean(…)

唯一扩展 parse静态方法

Boolean.parse("true") // 返回true

Boolean.parse("fAlSe") // 返回false

 

Number原生类型及其扩展

字符串 à 数值

Number.parseLocale(value)

Number.parseInvariant(value)

数值 à 字符串

Number.prototype.format(format)

Number.prototype.localeFormat(format)

 

Date原生类型

Date.prototype.getTimezoneOffset() 获得时差的分钟数

构造Date对象

• var d1 = new Date();

表示当前时间的对象(时差是表现上的概念)

• var d2 = new Date(0);

表示UTC时间1970110时整

• var d3 = new Date(2007, 5, 6);

本地时间2007660时整

月从0开始(011表示一月到十二月)

• var d = new Date(Date.UTC(2007, 5, 6));

表示UTC时间2007660

 

Date对象 à 字符串

与操作系统设置无关,与脚本引擎有关

– toString()toDateString()toTimeString()toUTCString()

与操作系统设置相关

– toLocaleString()toLocaleDateString()toLocaleTimeString() 没有toLocaleUTCString()

字符串 à Date对象

• Date.parse(str) 返回表示Date的那个数字,只可识别特定的格式

修改和获取Date对象属性

• getTime / setTime

• getFullYear / setFullYear / getUTCFullYear /setUTCFullYear

• getMonth / setMonth / getUTCMonth / setUTCMonth

• getDate / setDate / getUTCDate / setUTCDate

• getDay / setDay / getUTCDay / setUTCDay

• getHours / setHours / getUTCHours / setUTCHours

• getMinutes / setMinutes / getUTCMinutes /setUTCMinutes

• getSeconds / setSeconds / getUTCSeconds /setUTCSeconds

• getMilliseconds / setMilliseconds / getUTCMilliseconds/ setUTCMilliseconds

 

Date原生类型的扩展

Date对象和字符串之间的转换

字符串 à 数值

Date.parseLocale(value, formats) Date.parseInvariant(value, formats)

数值 à字符串

Date.prototype.format(format) Date.prototype.localeFormat(format)

 

String原生类型的扩展

字符串与String对象

length:获得字符串长度

charAt(pos):获得当前位置的字符(串)

indexOf(str, position):查找字符串

lastIndexOf(str, position):从后查找字符串

match(regexp):使用正则表达式检验字符串

replace(search, replaceValue):替换字符串

search(regexp):在字符串搜索某个子串

toUpperCase():将字符串转化为大写

toLowerCase():将字符串转化为小写

split(str):分割字符串至数组

substring(start[, end]) 得到子字符串,从下标start开始,到下标end-1为止

slicesubstring方法功能几乎相同,如果start小于零,则表示倒数第n位(start +

length),end亦是如此。

endsWith:返回布尔值,表明是否以某字符串结尾

startsWith:返回布尔值,表明是否以某字符串开始

trim:返回字符串,去处原字符串首尾空白

trimEnd:返回字符串,去处原字符串结尾空白

trimStart:返回字符串,去处原字符串起始空白

String.format(format, arg1[, arg2[, arg3…]]

– Stirng.format("{0}…", obj, …)

– String.format("{0:format}…", obj, …)

如果需要保留大括号则使用双括号

• String.format(“{{0}}”, obj, …) = “{0}”

• String.localeFormat(…)

format方法的功能之外,提供与当前语言环境相关的字符串转化功能