JavaScript小技巧
更新时间:2024-04-14 17:13:01 阅读量: 综合文库 文档下载
JavaScript小技巧
?
置了过高的安全级别,那么就显示出相应的提示信息,避免了用户不知情的情况下停止运行或者得到错误的结果。
? 在基于IIS的ASP的应用中,将一段JavaScript声明为服务器端代码,只需要在;阻止页面文档出现在框架内
4. 一个比较彻底的方式是采用编码后的数据作为内容,再通过特定的模板生成静态的
HTML/XML页面文档,最后利用客户端JavaScript将文档动态输出。
? 使用 pop() 来删除并返回数组的最后一个元素。(shift/unshift pop/push) ? shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
? Obj = {x:1,y:2}是一种JavaScript中常见的对象变量的形式,它可以直接作为Hash表,即相当
于obj.x = 1,obj.y = 2
? A=[] 是 JavaScript 中定义数组的语法之一
? onselectstart=\文字是不能被鼠标选中 ? JavaScript调试方法
? 直接插入调试用的输出语句,如alert();
? 定义一系列的调试方法,利用JavaScript的“反射”机制查看对象内部的属性和值。
定义输出闭包将调试信息输出。
? 将Debug封装成专门的调试对象,定义指定的输出方法和输出级别,这样可以实
现不修改代码打开或者关闭调试功能。
? 在JavaScript代码中通过debugger语句设置断点用Visual Studio IDE进行调试 ? Step in 是指逐行执行指令并且遇到子程序时进入掉用堆栈。
? Step out 是指让进入子程序调用堆栈的程序执行知道从子程序中返回。 ? Step over 是指逐行执行指令并且遇到子程序时跳过调用堆栈知道下一条语句。 ? 异常处理机制——一个try/catch/finally模式
? JavaScript核心内置的异常对象只有Error、EvalError(表达式计算错误)、RangeError(数
值/数组下标越界)、Syntax Error(语法错误)和TypeError(数据类型错误)五种。 ? 对于数学运算,如果计算得不到数值结果,则JavaScript根据不同情况返回一个NaN或
者Infinity作为值,但那不是异常。如果正则表达式对象错误,JavaScript返回一个SyntaxError
? 与其他的Error相比,SyntaxError比较特殊,它的产生阶段通常是在词法分析时,所以
它并不会沿调用堆栈向上传播,也因此很难被catch。一个例外是在程序中故意实例化了一个SyntaxError对象。 ? 处理异常的技巧:
? 严格划分异常的种类 ? 声明对象可能抛出的异常 ? 谨慎处理各类异常
? 缺省行为(通过finally快指定异常发生时的缺省行为,但是要注意的是,不要试图
利用finally块让系统从异常中恢复)
? 如果要让系统从异常中恢复,应该通过catch块而不是依赖于finally块 ? 常见的标准字符集有ASCII、ISO Latin-1、GBK和Unicode。
? ASCII是7位编码的字符集,它基本上只适用于英语。 ? 8位的ISO-Latin-1则支持大部分拉丁语系的语种。
? 16位编码的GBK和Unicode则充分支持了汉语系的东方语种。
? JavaScript对元素标签的大小写敏感,JavaScript对于DOM事件类型名采用的是小写 ? JavaScript指令中的空白符、制表符和换行符被统称为“分隔符”。 ? JavaScript解析器采用的是最长行匹配原则。
? 在字符串常量和正则表达式中,通常用”\\t”表示制表符,”\\n”表示换行符,而用”\\s”来表
示所有的分隔符。
? With是最常见的域谓词,if、while和for是逻辑谓词,函数和闭包通常由function标记
和名称构成。
? JavaScript通过分号来划分句子,然而分号又可以被缺省,于是就形成了有些令人头痛
的所谓最长行匹配原则。 ? JavaScript中已经使用的保留字:
? Break ? Case
catch
continue
do
? debugger ? Else ? Finally ? If
in
default delete
for function instanceof
? New ? Return ? Switch ? This ? Var void ? While
with throw
try typeof
? 留待以后使用的保留字
? Abstract ? Boolean byte ? Char ? Double ? Enum ? Final ? Goto
export float
int interface extends
class
const
? Implements import ? Long ? Native
? Package private protected ? Short
static
super
public
synchronized
? Throws transient ? Volatile
? JavaScript标识符的命名规则:
? 要求第一个字符必须是字母、下划线或者美元符号,接下来的字符可以是字母、数
字、下划线或者美元符号
? ECMAScript v3标准支持任何非保留字的Unicode字符组合来作为标识符。而且这
个版本还允许标识符中有Unicode转义序列。所谓转义序列,是字符\%u后接4个16进制的数字,用来指定一个16位的字符编码。
? 如果没有用var语句给一个变量指定初始值,它的初始值就是undefined
? JavaScript也可以缺省变量的声明,缺省声明直接赋初值的变量作用域默认为全局。 ? 用typeof来判定和处理脚步程序的某些特性之间的依赖。
? 有时候需要判定某个对象或者某个域是否已经被声明过。
? JavaScript除函数(或闭包)外的任何程序段落都不是独立的域。换句话说JavaScript么
有块级作用域,函数体内生声明的所有变量,无论是在哪里声明的,在整个函数中他们都是有定义的。
? 运算符“+”既可以对数字进行代数求和,也可以对字符串进行连接操作,而它总是把
对象转换成可以进行加法运算或者进行连接操作的数值或字符串,这一转换是通过调用对象方法valueOf()或toString()来执行的。
? 运算符“-”总是对两个运算数进行代数减法操作,如果运算符是非数值的,那么运算
符“-”总是试图将他们转成数值,这一转换和调用parseFloat方法的数值转换类似,但是通常效率更高。如果转换失败,将会得到特殊的值NaN。
? 当除法的除数为0时,运算结果通常为Infinity,而如果是0/0,则结果将达到NaN。 ? 在通常情况下,if(a ==b)dosth(); 和 a==b && dosth(); 或者 a!=b || dosth()等价; ? 对于类似b++这种具有副作用(我们称赋值、递增、递减和函数调用在计算表达式值的
同时改变变量本身值的行为为“副作用”)的表达式,最好不要放在逻辑&&和逻辑||运算符的右边,以免引起混乱。
? 对任何表达式a连续使用两次“!”运算符(即!!a)都可以将它转换成一个布尔值。 ? a? b : c 完全等价于 if( a ){ b: }else{ c; }
? 逗号运算符是一个双目运算符,它的作用是连接左右两个预算数,先计算左边的运算数,
再计算右边的运算数,并将左边运算数的计算结果作为表达式的值返回。 ? X = ( I = 0, j = 1; k = 2 ) 等价于 I = 0 ; j = 1; x = k = 2;
? 对象运算符是指作用于对象实例、属性或者数组以及数组元素的运算符。
? JavaScript中的对象运算符包括in运算符、instanceof运算符、new运算符、delete 运算
符、.运算符和[]运算符。
? 利用运算符”in” 的特性可以将对象当作一个集合来使用,对象的属性作为集合的元素。 ? Typeof运算符对数值、字符串或者布尔值分别返回“number”、“string”和“Boolean”,
对对象、数组和null,它返回的是“object”,对函数、类和闭包它返回“function”,如果运算数是未定义或者未赋初值的,它返回“undefined”
? 由于typeof对所有对象和数组类型返回的都是“object”,所以它在区别对象和原始类
型时才有效。要真正区别一种对象和另一种对象的类型,必须使用其他的方法,例如
instanceof运算符和constructor属性。
? Void是一个一元运算符,它可以出现在任何类型的操作数之前,作用是舍弃运算数的
值,返回undefined作为表达式的值。这种运算符常用在客户端的JavaScript:URL伪协议中,在这里可以计算表达式的值,而浏览器不会显示出这个值。 ? Void的另一个用途是专门生成undefined值。
? JavaScript允许case语句后跟随任意的表达式,这一点同C/C++和Java的swich语句有
很大的不同,在C/C++和Java中,case表达式必须是编译时的常量,它们的值必须为整数类型,而且所有值的精度类型必须相同。
? 一般情况下,switch语句体中总是用跳转语句break或者return来分隔每个case标签,
终止语句的执行,但是也有例外。
? 在JavaScript中,循环语句主要有while语句和for语句两种形式。
? For/in语句一个最有用的功能便是它可以枚举出一个对象所有可枚举的属性,包括原生
属性和继承属性。
? For/in的存在不但为JavaScript提供了一种很强大的反射机制,也使得javaScript的集合
对象使用起来可以像Perl的哈希表一样方便。
? 跳转语句是用来让程序逻辑跳出所在分支、循环或从函数调用返回的语句。JavaScript
的跳转语句包括break语句、continue语句和return语句。
? 当break和标记一起使用时,程序逻辑将跳到这个带有标记的语句的尾部,或者终止这
个语句。该语句可以是任何用括号括起来的语句,它不一定是循环或者switch语句,也就是说当break和标记一起使用时,可以不必包含在一个循环语句或者switch语句中。 ? 对于break语句中的标记的唯一限制就是它命名的是一个封闭语句。这个标记命名的可
以是一个if语句,甚至可以是一个用大括号组合在一起的语句块,封装快的目的是用标记对他进行命名。
? Continue语句的用法和break语句非常类似,唯一的区别是,continue不是退出循环而
是开始一次新的迭代。同break语句一样,允许continue语句和标记一起使用。 ? Continue(无论是带标记还是不带标记)只能用在循环语句的循环体中,在其他地方使用
都会引起系统级的SyntaxError。
? Return语句的expression可以缺省,缺省expression的return语句作用仅仅是从函数调
用中返回,不带任何值。
? 如果一个函数执行了缺省expression的return语句或者执行到函数主题的尾部而返回,
那么它的返回值就是undefined。
? With语句用来暂时修改默认的作用域。它的基本形式如下:
? With(object)
statement
? 在实际应用中,with语句的作用是减少程序代码的输入,特别是当代码作用于一些深
层次的对象时。例如:
Frames[1].document.forms[0].name.value = “”; Frames[1].document.forms[0].adress.value = “”; Frames[1].document.forms[0].email.value = “”;
可以写成:
With(Frames[1].document.forms[0]){ }
? 需要注意的是NaN这个符号同任何数值包括它自己在内都不相等,所以只能用一个特
殊的isNaN()方法来检测这个值。另一个内置函数isFinite()当数值为±Infinity或NaN时返回false,否则总是返回true,可以用它来判定常规数值。 ? 关于字符串还有许多操作,例如
? charAt(index)方法可以获取index位置上的字符
? charCodeAt(index)方法则可以获取index位置上字符的Unicode编码 ? substring和slice方法可以抽取子串
? indexOf(char)方法可以查找指定字符在字符串中第一次出现的位置 ? search方法可以查找和匹配字串 ? replace方法可以完成子串的替换
? 当布尔型被转换成数值时,true通常被转换成1,而false通常被转换成0。
? JavaScript的一个重要特性是可以直接对函数进行操作。在许多语言中,函数都只是语
法特性,它们可以被定义、被调用,但却不是数据类型。JavaScript中的函数是一个真正的数据类型,这一点给语言带来了很大的灵活性。这意味着函数可以被存储在变量、数组和对象属性(一个将存储在对象属性中的函数称为对象方法)中,而且函数还可以作为参数传递给其他函数。这是非常有用的。
? 虽然undefined和null不同,但是运算符“==”却将它们视为相等的值
? 如果必须明确区分null和undefined,可以使用“===”运算符或typeof运算符。
Typeof(undefined)的值是undefined,typeof(null)的值是object。
? JavaScript中也支持一对象的方式构造和创建正则表达式。RegExp()是构造函数。 ? JavaScript不能直接操纵变量中存放的地址值,因此它的变量只能作为引用类型来使用,
而不能像C++那样既可以将变量作为引用也可以用指针直接操作变量中存放的地址。
Name.value = “”: Address.value = “”; Email.value = “”;
? 和在其他程序设计语言中一样,在JavaScript中可以采用三种重要的方式来转播和操作
一个数据:
? 第一,可以复制它,例如将它赋给一个新的变量; ? 第二,可以将它作为参数传递给一个函数或方法; ? 第三,可以把它和其他值进行比较。 ? 当一个数据被复制时,
? 如果数据使用值的方式存储,那么这个复制操作马上会生成这个值的副本,副本和
原数据的值相同,存储在不同的位置,改变副本的值并不会影响原始数据的值,反之亦然。
? 如果复制数据时,数据使用引用的方式存储,那么实际上被复制的是对这个数据的
引用,数据的实际副本只用一份,不论是通过原始的变量改写数据的值还是通过新的变量改写数据的值,数据的变化马上会同时在两个变量发生。
? 其次,将一个数据作为参数传递给一个函数
? 如果那个数据是使用值方式存储的,那么函数参数中实际上市获得了这个数据的一
个副本,在函数体内改变参数的值,并不会实际影响到被传递的数据本身。 ? 如果传递参数时,数据时使用引用方式存储的,那么函数参数实际上复制的是数据
引用的副本,在函数体内改变引用的值的内容,会马上作用于实际的数据。
? 第三,比较两个使用值存储的数据时,
? 如果它们的值相同,等值比较的结果是true,否则为false。如果值所在的集合满
足偏序关系,那么除了等值比较之外,还可以有大于、小于、大于等于、小于等于等多种运算,并且满足条件a op b ∩ b op c => a op c。这里的op可以为“等于”、“大于”、“小于”、“大于等于”、“小于等于”等算子(对应于JavaScript的“==”、“>”、“<”、“>=”、“<=”运算符)。
? 如果比较两个使用引用存储的数据,当且仅当它们引用同一个值时,等值比较的结
果才是true,否则为false。由于比较的是引用(对应存储地址),和值所在的集合无关,因此对引用数据直接进行大于、小于、大于等于、小于等于比较通常是没有意义的。
? JavaScript提供了parseInt()、parseFloat()和toString()方法进行强制类型转换。 ? JavaScript中还可以通过构造函数来进行强制类型转换
? JavaScript提供了几个取整的函数,来限定解的精度,它们分别是Math.floor()、
Math.round()、Math.ceil()以及Number对象提供的toFIxed方法。 ? Math.floor取比当前数值小的最大整数(包括负数) ? Math.round() 四舍五入
? Math.ceil 取比当前数值大的最小整数(包括负数)
? toFIxed(n) 保留n位小数
? JavaScript中函数定义的方式主要有两种:
? 通过function语句来定义(将函数视为一种静态语法) ? 通过构造Function对象来定义。(将函数作为一种动态对象
? 在目前大多数JavaScript实现中,用function定义函数要比用Function构造函数块得多,
所以Function仅用于某些动态要求很强的特殊场合。
? 通过function来定义函数又有两种不同的方式,分别是命名方式和匿名方式,例如
? function f2() { alert(); } //命名方式 ? var f1 = function() { alert(); } //匿名方式
? 命名方式和匿名方式定义的函数有一点区别,有时候,我们将命名方式定义函数的方法
称为“声明式”函数定义,而把匿名方式定义函数的方法称为引用式函数或者函数表达式。
? 声明式函数定义的代码先于函数执行代码被解析器解析,而引用式函数定义,或者函数
表达式则是在函数运行中进行动态解析的。
? 习惯上,我们也把通过命名方式定义的函数称作函数常量,而把赋给变量的匿名函数称
作函数对象,把引用了函数对象的变量称作函数引用。
? 在JavaScript中,最直接和最有用的函数定义方式事实上市闭包,而闭包的妙味不仅仅
是在于它可以用作对象属性和被复制,更因为它使得函数算子成为整个计算表达式的一部分,从而使得整个程序的公式化程度大大提升,而公式化是函数式编程的精髓。而且JavaScript的闭包还可以轻易访问外部环境,这种特性带来的好处是别的语言无法企及的。
? 除了通过下标访问参数之外,Arguments对象还提供了一个有用的属性,叫做callee,
还被用来引用当前正在执行的函数,它提供了一种匿名的递归调用能力,这对于闭包来说非常有用。例如:用闭包计算10的阶乘
? JavaScript:( function(x) { return x > 1 ? x * arguments.callee(x-1) : 1 })(10); ? 将函数引用赋给一个对象的属性,可以将函数作为该对象的方法来调用;
? 将函数赋给一个函数的“原型(prototype)”,则可以将函数作为“一类”对象的方法来
调用。
? Function原型定义了两个方法,它们是call()和apply()。使用这两个方法可以像调用其
他对象方法一样调用函数。
? Call()和apply()方法的第一个参数都是要调用函数的对象,用call()和apply()调用函数时,
函数内的this属性总是引用这个参数。
? Call()的剩余参数是传递给要调用的函数的值,它们的数量可以是任意的。Apply()方法和
call()方法类似,只不过它只接受两个参数,除了调用者之外,它的第二个参数时一个带
下标的集合(比如数组,但也可以不是数据),apply()方法把这个集合中的元素作为参数传递给调用的函数。
? new Function(“alert(‘abc’)”)(); 相当于 Function(“alert(‘abc’)”)(); 或者 a =
function(){alert(‘abc’)};a();
? 如果把Function作为函数来看待,省略new操作符,可以得到同样的结果
? 在JavaScript中,Object是所有对象的父类,ECMAScript标准规定所有的JavaScript核心
对象必须拥有Object类的原型属性和方法,这些属性和方法包括:
? Constructor。JavaScript规定,实例的contructor的值总是对构造函数即对象类本身
的引用。
? hasOwnProperty()。这是一个对象方法,用来检查对象是否有局部定义的(非继承
的)、具有特定名字的属性。
? isPrototypeOf()。这个方法用来检查对象是否是指定对象的原型。
? propertyIsEmuerable()。这个方法用来检查对象是否拥有指定属性且这个属性可
for/in循环枚举。只有当对象拥有某个属性并且该属性可被枚举时,该方法的返回值才是true。属性是否可枚举是由JavaScript内部机制决定的,一般情况下用户自己定义的对象属性都是可枚举的。
? toLocaleString()。返回对象本地化的字符串表示。该方法的默认实现只调用toString()
方法,但子类可以覆盖它,提供本地化。
? toString()。返回对象的字符串表示。Object提供的该方法的实现相当简单,并且
没有提供更多有用的信息。Object的子类通过定义自己的toString()方法覆盖了这一方法。
? valueOf()。返回对象的原始值(如果存在)。对于类型为Object的对象,该方法只
返回自身,Object的子类覆盖了该方法,返回的是与对象相关的原始值。
? 为对象添加和删除属性:
? 第一种简单而直接的方式是给对象属性赋值。 ? 另一种方式是通过构造函数添加属性
? 最后一种方法,它通过用来为某一类对象的所有实例添加某个方法或者某种常量属
性。
? 随人为对象添加属性可以有多种方法,但是删除对象的属性只有一种形式,即用delete
操作符。
? 在JavaScript中,任何合法的函数都可以作为对象的构造函数,既包括系统内置函数,
也包括用户自己定义的函数。一旦函数被作为构造函数执行,它内部的this属性将引用对象本身。
? 构造函数通常没有返回值,它们只是初始化由this值传递进来的对象,并且什么也不返
回。如果函数有返回值,被返回的对象就成了new表达式的值。
? 从形式上来看,一个函数被作为构造函数和普通函数执行的唯一区别是,是否用new
运算符。
? 如果一个函数的返回值是一个引用类型(数组、对象或者函数)的数据,那么将这个函
数作为构造函数用new运算符执行构造时,运算的结果将被它的返回值取代,这时候,构造函数体内this值丢失了,取而代之的是被返回的对象。
? 在JavaScript中几乎所有的函数作为构造函数使用,返回的都是以Object为父类的对象
实例,对它们使用typeof运算符,得到的结果都是object,除了Function外。对Function使用构造函数创建对象,得到的类型时function。因此,从面相对象的角度可以将Function看作为“创建类的类”,所以它们才有被称为“元类”或者“类模板” ? 缺省构造并不是缺省构造函数本身,而指的是构造函数的参数为空的时候,JavaScript
的语法允许缺省构造函数名称后面的括号。
? 对象的拷贝构造则是一种技巧。对象在JavaScript中是引用类型,因此将值为一个对象
的变量赋值,实际上赋值的是它的引用,对象的副本并没有被复制。 ? 要及时销毁一个对象,最直接的办法是将所有关于这个对象的引用都销毁。如
? Var p1 = new Point(1,2); //构造对象,引用计数为1 ? Var p2 = p1;//复制了该对象,引用计数为2 ? 。。。。。。。。。
? P1 = null; p2 = null; //将p1和p2的值置为null可以将引用消除 ? CollectGarbage(); //IE调用这个函数可以立即回收无用的对象。
? 实际上不用调用任何函数,浏览器也会按照自己的规律执行存储单元回收 ? JavaScript核心中提供了丰富的内置对象,除了前面介绍过的Object基本对象之外,最
常见的有Math对象、Date对象、Error对象、Array对象、String对象和RegExp对象。其中Array对象、String对象和RegExp对象比较复杂。
? Math对象是一个静态对象,这意味着不能用它来构造实例。Math对象主要为JavaScript
核心提供了对数值进行代数计算的一系列方法以及少数重要的数值常量。
? Date对象是JavaScript中用来表示日期和时间的数据类型。可以通过几种类型的参数来
构造它。
? 最简单的形式是缺省参数;var now = new Date;
? 其次可以是依次表示“年”、“月”、“日”、“时”、“分”、“秒”、“毫秒”的数值,并
且这些数值除了“年”和“月”之外,其他的都可以缺省。Var d = new Date(2011,1,2);以这种形式构造日期时应当注意的是,JavaScript中的月份是从0开始计算的。 ? 第三种构造日期的方式是通过一个表示日期的字符串,var d = new
Date(“1999/01/02 12:00:01”); //这次表示的是1月份了。
? 第四种不太常用的方法是通过一个整数参数来构造日期,这个整数代表的是距离
1970/01/01 08:00:00的毫秒数。这一种方式虽然不太常用,但它的存在使得date对象可以通过构造函数来拷贝日期,因为一个日期对象的valueOf方法返回的正式这个值(getTimen方法也是)
? Date()还可以作为普通函数来调用,这时候它忽略所有的参数,简单返回一个表示当前
日期的字符串。
? JavaScript还提供了一些有用的全局常量和函数,它们包括前面见到过的NaN、Infinity、
undefined、null、isFinite()、isNaN()、parseInt()、parseFloat()等 ? 可以用三种不同的方式来调用Array()创建数组
? 第一种方式是无参调用;var a = new Array();
? 第二种方式是通过传递参数明确指定数组前n个元素的值:
Var a = new Array(5,4,3,2,1,”testing,testing”);
? 第三种方式是传递给它一个数值参数,这个参数指定了数组的长度
var a = new Array(10);
? 如果唯一参数是一个数值但不是合法的值,JavaScript并不会将它作为第二种方式来理
解,而是抛出一个RangeError。
? Argument对象有同数组类似的行为,但它却不同于JavaScript核心数组,它不具有数组
一些有用的方法,比如push(),concat()和slice()等,这时候利用Array函数的apply方法可以很容易将Argument和其他一些带下标的对象转换为数组。 function test(){ }
? 数组的length属性既可以读,也可以写,如果给length设置了一个比它当前小的值,
那么数组将会被截断,这个长度之外的元素都会被抛弃,它们的值也就丢失了,如果给length设置的值比当前的值大,那么新的,未初始化的元素就会被添加到数组末尾。 ? Array原型的push()和pop()方法将数组看作是一种堆栈类型的数据结构。这种数据结构
的特点是“后进先出”,使用push()方法可以在数组的末尾插入一个或多个元素,而使用pop()方法可以依次弹出它们。
? Array原型的shift()和unshift()方法也是一对堆栈方法,只是它们作用于数组的头部。使
用unshift()方法可以将一个或多个元素插入到数组的头部,使用shift()方法则可以依次从头部删除它们。
? Join()方法可以把一个数组的所有元素都转换成字符串,然后再把它们连接起来。
return
Array.apply( this,arguments );
//小技巧:将传给函数test()的参数列表转换为数组对象返回
? Join的一个非常有效的应用是作为字符串缓存(StringBuffer)来用,因为Array的join
方法构造字符串的整体要高于“+”运算符来连接字符串。
? Reverse()方法将颠倒数组元素的顺序并返回颠倒后的数据。它在原数组上执行这一操作,
并不是创建一个重新排列的新数组,而是在已经存在的数组中对元素进行重排。 ? Sort()方法是在原数组上对数组元素进行排序,它可以接受一个参数,这个参数时比较
两个元素值的一个闭包,如果这个参数缺省,那么sort方法将按照默认的规则对元素进行排序。
? Concat()方法能创建并返回一个数组,这个数组包含了调用concat()的原始数据的元素,
其后跟随的是concat的参数,如果其中有些参数是数组,那么它将被展开,其元素将被添加到返回的数组中,但是要注意,concat()并不能递归地展开一个元素为数组的数组。
? Slice()方法返回的是指定数组的一个片段,或者说是子数组。它的两个参数指定了要返
回的片段的起指止点。返回的数组包含第一个参数指定的元素和从那个元素开始到第二个参数指定的元素为止的元素。但并不包括第二个参数所指定的元素,如果第二个参数省略,那么返回的数组将包含起始位置开始到元素数组结束处得所有元素。如果参数的值是负数,那么它所指定的是相对数组中最后一个元素而言的元素。例如参数-1指定的是数组最后一个元素,参数-3指定的是数组倒数第3个元素。
? Splice()方法是插入或删除数组元素的通用方法,它在原数组上进行修改,就像reverse
和sort那样并不创建新数组。
? Splice可以把元素从数组中删除,也可以将新元素插入到数组中,或者是同时执行这两
种操作。位于被插入了或删除了的元素之后的数组元素会进行必要的移动,以便能够和数组余下的元素保持连续性。
? Splice()的第一个参数指定了要插入或删除的元素在数组的位置,第二个参数指定了要从
数组中删除的元素的个数。如果第二个参数被省略了,那么将删除从开始元素到数据结尾处得所有元素。
? Splice()返回的是删除的元素组成的数组,如果没有删除任何元素,将返回一个空数组。 ? 除了前两个参数之外,splice还可以有任意数量的额外参数,这些参数是要从第一个参
数指定的位置处开始插入的元素。
? String对象的charAt方法和charCodeAt方法用来抽取字符串指定位置的字符。它们的唯
一参数指定了该字符串的位置。两个方法的区别是,charAt方法返回的是指定位置上的字符。而charCodeAt方法返回的是该字符的Unicode编码。如果指定位置的字符不存在,charAt方法返回空字符串””,而charCodeAt方法返回NaN。
? String对象的indexOf方法和lastIndexOf方法用来在字符串中检索一个字符或一个子串,
如果该字符或子串存在,indexOf返回它第一次出现在字符串的位置,这个位置是用一
个从0开始的数值来表示的。
? LastIndexOf方法和indexOf方法的区别是它查询的字符串的顺序是从字符串末尾开始朝
前的。
? 如果被检索的字符或子串在字符串中不存在,indexOf方法和lastIndexOf方法都返回数
值-1.
? String对象的substring方法和slice方法用来抽取字符串的子串。这两个方法非常类似,
都接受两个数值作为参数,这两个数值分别指定了子串的起止位置。返回字符串由起始位置开始知道终止位置(不包括终止位置)的字符构成的子串。
? 二者的区别是,slice接受负数值作为参数,这时候相对位置从字符串的末尾开始计算,
不是从字符串开始计算。如果slice的参数表示的起始位置大于终止位置,那么它的返回值是一个空串,但是如果substring的第一个参数大于第二个参数,它在抽取字符串前会先交换这两个参数的值。
? String对象的split方法可以用来拆分字符串。它接受一个字符串或者正则表达式参数作
为分隔符,返回被这个分隔符分隔之后的字符串数组。Split方法的第二个参数指定了分隔后字符串数组的最大长度,大于这个长度的子串将被舍弃,如果默认这个参数,则不舍弃任何子串。
? 字符串的连接可以通过运算符“+”,也可以通过数组的join方法。数组的join方法正好
执行与字符串的split相反的操作
? 第三种字符串连接的方法是字符串的concat方法,它和数组的concat方法类似,只不
过参数为多个字符串,concat方法将他们依次连接到字符串的末尾。注意,同数组的concat方法一样,字符串的concat方法并不修改字符串本身的值。 ? JavaScript中关于模式匹配的字符串方法主要有match、search和replace。 ? Match是常用的字符串匹配方法,它的参数时模式,这里是用正则表达式来描述的 ? Search是另一种模式匹配方法,它检索字符串的子串,返回符合模式的子串位置。如果
没有子串和模式匹配,它返回-1.
? 在JavaScript中,要构造一个正则表达式,可以使用RegExp()构造函数构造正则表达
式对象。对于正则表达式常量,还可以用更为简洁的直接量构造法。 ? 需要转移的特殊符号:^ $ . * + ? = : ! | \\ / () [] {} ? Window对象的属性
status onresize onmessage parent onhashchange defaultStatus name history maxConnectionsPerServer opener location screenLeft document onbeforeprint screenTop clientInformation onerror onfocus event onload onblur window closed screen onscroll length frameElement self onunload onafterprint navigator frames sessionStorage top
clipboardData external onhelp offscreenBuffering localStorage onbeforeunload
? 同一般的JavaScript对象不同,Window对象的生命周期比较特殊。通常来说,一个
Window对象在某个浏览器进程被终止前总是存在的。也就是说,即使你关闭了某个浏览器窗口,这个窗口所引用的Window对象依然存在,除非这个浏览器进程已经被完全终止。
正在阅读:
JavaScript小技巧04-14
幼儿园中班健康教案:保护眼睛11-19
修订版成人大专考试试卷(有答案)03-12
MHS麦克维尔风冷螺杆机组操作手册05-10
语文人教版七年级上册再塑生命的人05-29
成功人士必备的七大好习惯,你值得拥有!09-17
过热器及省煤器的组合安装08-13
换热器设计外文翻译原稿05-15
机床主轴新油润滑角接触球轴承问世08-10
WebSign-开发文档12-06
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- JavaScript
- 技巧
- 公司督查督办工作管理办法 - 图文
- 国家学生体质健康标准测试用表
- 学校计算机室工作制度
- 《社会调查研究》期末复习资料1
- APQP小组成员及职责表
- 《关于印发“安全管理‘红线’及‘重点’部分条款及释义修订说明
- 国内外轴承钢发展现状及方向
- (五年级语文教案)《童年的发现》说课稿
- 2012年硕士研究生招生简章 - 图文
- 饲料和饲料添加剂生产企业从业人员法规考核试题答案
- 移动电源工业设计合同书-20150322
- 2015-2016学年度广州版小学五年级下册英语期末试题(含听力材料
- SPSS19.0学生实验指导书2015
- 私募股权投资基金募集说明书-103
- 英语语法大全
- 给十岁儿子的一封信
- 苏教版三年级数学下册《第六单元达标测试卷》(附答案)
- 广工计算机组成原理实验报告 - 图文
- bios教程 - 图文
- 评论投稿邮箱