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) – 获得item在array中的下标,从下标为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对象IE和FireFox公有属性
– 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对象– true和false,而不是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时间1970年1月1日0时整
• var d3 = new Date(2007, 5, 6);
– 本地时间2007年6月6日0时整
– 月从0开始(0到11表示一月到十二月)
• var d = new Date(Date.UTC(2007, 5, 6));
表示UTC时间2007年6月6日0时整
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为止
slice:substring方法功能几乎相同,如果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方法的功能之外,提供与当前语言环境相关的字符串转化功能