JAVASCRIPT学习摘记



JavaScript一种直译脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为ECMAScript

对于JAVASCRIPT的学习,主要摘记如下:


1.JavaScript其实是ECMAScript的一种实现,而浏览器脚本语言的国际标准则是ECMAScript.(ECMA,European Computer Manufacturers Association).

但实际上JavaScript包括三大部分,即核心部分(ECMAScript),文档对象模型(DOM),浏览器对象模型(BOM).


2.<script> 标签用于定义客户端脚本,

属性TYPE指示脚本的 MIME 类型;

async规定异步执行脚本(仅适用于外部脚本);

charset规定在外部脚本文件中使用的字符编码;

defer规定是否对脚本执行进行延迟,直到页面加载为止;

language不赞成使用。规定脚本语言。请使用 type 属性代替它;

src规定外部脚本文件的 URL;

xml:space 规定是否保留代码中的空白。



3.CDATA 指的是不由 XML 解析器进行解析的文本数据。在标记CDATA下,所有的标记、实体引用都被忽略,而被XML处理程序一视同仁地当做字符数据看待,CDATA的形式如下:<![CDATA[文本内容]]>CDATA的文本内容中不能出现字符串“]]>”,另外,CDATA不能嵌套。



4.noscript 元素用来定义在脚本未被执行时的替代内容(文本)。此标签可被用于可识别 <script> 标签但无法支持其中的脚本的浏览器。



5.ECMAScript的基本概念:

5.1区分大小写,即变量名,函数名等区分大小写,且一般将有意义的单词的首字母大写。

5.2单行注释以“//”表示,块注释以“/×......*/"表示。

5.3语句以分号表示结束,若无分号,由解析器自动确定。

5.4变量为弱类型变量,即变量类型无强制要求,由”var"操作符声明,且为局部变量,若省略var操作符则为全局变量,但不建议省略。

5.5typeof操作符可以检测变量的数据类型,包括undefined,boolean,string,object(包括对象和null),function,nubmer.

5.6for-in语句的格式为for(var property in expression){statement}主要用来枚举对象的属性。

5.7label语句可以在代码中添加标签。格式为label:statement  主要与FOR语句结合使用。

5.8with语句是将代码的作用域设置到一个特定的对象中,格式为 with (expression) statement。

5.9函数格式为 function functionName(arg0,arg1,...argN){statements} 且参数的类型与数量与变量定义一样,为弱类型。但函数没有重载功能。



6.函数中的参数传递时,若为引用类型,则可以传递给外部,但若在函数内部定义变量,则对外部无影响了。即函数内部定义的是局部变量,可以认为是与外面无关的一个新的变量,仅仅是名称相同而已,且名称相同的变量中同一个作用域中以后面的赋值为主。当然,这也可以在一定程度上解释为函数的参数是按值传递的(实际上对于引用类型的参数,在同一个作用域中,应该是按照引用传递的,待考证)。


7.instanceof 用来检测引用类型是否为具体的类型?格式为result = variable instanceof constructor。


8.执行环境(execution context)定义了变量或函数有权访问的其他数据,决定了它们各自的行为。每个函数都有自己的执行环境。由于执行环境分为全局与局部两种,没有块级作用域,而局部仅仅指函数定义的作用域,故函数之外的都是全局作用域,因此,在IF等语句块中的变量等信息是全局性变量。


9.当代码在一个环境中执行时,会创建变量对象的一个作用域链(scope chain),用于保证对执行环境有权访问的所有变量和函数的有序访问。


10.JavaScript没有块级作用域,故所有 变量的作用域都是当前的执行环境,而执行环境只有全局与局部(基本以函数定义为主)两种。而未明确声明的变量也是全局变量。


11.引用类型是一种数据结构,用于将数据和功能组织在一起。主要类型有Object,Array,Date,RegExp,Function,Boolean,Number,String,以及内置对象Global,Math.

11.1Object类型的创建方法有new操作符和字面量表示法两种。字面量时以大括弧标识。

11.2点表示法与方括号表示法都可以访问对象属性,但使用方括号时多以变量表示属性。

11.31Array类型的创建方法有new操作符和字面量表示法两种。字面量时以方括号标识。

11.4Array的方法包括toLocalString(),toString(),valueOf(),push(),pop(),shift(),unshift(),reverse(),sort(),concat(),slice(),splice().

11.5Date类型可以通过new操作符和Date构造函数进行创建,方法有Parse(),UTC(),toLocalString(),toString(),valueOf().

11.6RegExp类型用来支持正则表达式,也可以通过字面量定义或构造函数两种方式创建,一般格式为:var expression = / pattern /flags;方法有exec(),test().

11.7函数类型的定义为 function sum(num1,num2){statements},且函数实质为对象类型,函数名为指针,且没有重载功能。

11.8[function.]arguments.callee可选项 function 参数是当前正在执行的 Function 对象的名称。说明:callee 属性的初始值就是正被执行的 Function 对象。

11.9每个函数都包含两个属性,length,prototype.


12.正则表达式,又称正规表示法常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。


13.基本包装类型包括三类,即Boolean,Number,String.基本包装类型作为引用类型,是为了对基本类型进行一些对象类的操作,即赋予类型属性与方法。但与引用类型不同的是,基本包装类型的生存期不是执行环境的存续期,而是代码执行的瞬间。这也符合该语言弱变量类型的特征。但显式的创建则可以与引用类型一致。显式创建的格式为,var booleanObject = new Boolean(true);


14.Number包装类型的toFixed(n)方法会返回含有n个小数位的字符格式。toExponential()则返回指数表示法。toPrecision()表示返回合适的表示方法。



15.字符串的对象包装类型的方法主要有charAt(),charCodeAt(),concat(),slice(),substring(),substr(),indexOf(),lastIndexOf(),toLowerCase(),toLocaleLowerCase(),toUpperCase(),toLocaleUpperCase(),match().search(),replace(),htmlEscape(),split(),localeCompare(),fromCharCode().



16.内置对象是由ECMAScript实现提供的,不依赖于宿主环境的对象,这些对象在ECMAScript程序执行之前就已经 存在了。包括Global对象,Math对象.


17.Global对象是比较特别的一个对象,即不属于任何其他对象的属性和方法,最终都是它的属性和方法。主要方法包括isNaN(),isFinite(),parseInt(),parseFloat(),encodeURI(),encodeURIComponent(),eval().


18.Math对象的属性主要包括Math.E,LN10,LN2,LGO2E,LOG10E,PI,SQRT1_2,SQRT2.

 Math对象的方法主要有Math.min(),max(),ceil(),floor(),round(),random(),abs(),exp(),log(),pow(),sqrt(),acos(),asin(),atan(),atan2(),cos(),sin(),tan().


19.JAVASCRIPT中的对象是指无序属性的集合,其属性可以包含基本值、对象或者函数。每个对象都是基于一个引用类型创建的。包括构造函数模式与原型模式。


20.函数与对象构造函数的区别一般可以NEW操作符的使用为标志。


21.原型模式的关键在于确定函数原型属性prototype,且定义的方法与属性是各个实例共享的。


22.hasOwnProperty()方法可以检测一个属性是存在于实例中,还是存在于原型中,只有对在于对象实例中时,返回true. 与hasPrototypeProperty()作用相反。


23.使用for-in循环时,返回的是所有能够通过对象访问的,可枚举的属性,即包括实例中的属性,也包括原型中的属性。


24.OO语言主要通过接口继承和实现继承两种方式支持继承,而JAVASCRIPT则仅支持实现继承。


25.所谓原型链即一个原型是另一个类型的实例,而另一个类型指向第三个类型的原型,层层递进则产生了原型链的概念。


26.instanceof与isPrototypeOf()可以用来确定原型和实例之间的关系,只是两者表示的含义不同,即A是B的实例,与B是A的原型。


27.借用构造函数的技术即在子类型构造函数的内部调用超类型构造函数,通过apply(),call()方法实现。


28.由于JAVASCRIPT中的执行环境以函数来定义局部执行环境,故匿名函数因此获得了闭包功能、定义模块作用域,及定义私有变量等功能。


29.BOM浏览器对象模型主要是指浏览器之间共有的对象,用于访问浏览器,但与网页内容无关。闭包是指有权访问另一个函数作用域中的变量的函数。利用闭包可以模仿块级作用域。


30.window对象是JavaScript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象。因此,window对象的执行环境或作用域是全局。


31.在页面中,每个框架都有自己的window对象,因此,在HTML程序中,注意框架与JAVASCRIPT中的window对象的一一对应关系。另外,self对象与window对象可以互换使用。


32.var leftPos = (typeof window.screenLeft == "number") ? window.screenLeft : window.screenX;此语句可以先确定screenLeft属性是否存在,以便更改window对象的位置。

即screenLeft,screenTop 与screenX,screenY都可以表示window对象的位置,但不同的浏览器支持不同的属性的。


33.window 的其他属性有:innerWidth,innerHeight,outerWidth,outerHeight,document.body.clientWidth, document.body.clientHeight。方法有:moveTo(x,x),moveBy(x,x),resizeTo(),resizeBy(),open(),close()。


34.window.oper()的返回值如果是 null,则表示该窗口为浏览器内置的屏蔽程序阻止的。如果是抛出错误,则是浏览器扩展或其他程序阻止的。


35.window.setTimeout()方法表示要执行的代码中多少毫秒后执行,即超时调用,且该方法会返回一个数值ID,作为一个标识符。而clearTimeout(ID)可以取消超时。


36window.setInterval()表示要执行的代码间隔多少毫秒后重复执行,即间歇调用。同时该方法也返回一个ID,而clearInterval()可以取消间歇操作。


37.alert()方法接受一个字符串并将其显示给用户。confirm()方法让用户选择是否执行给定的操作。prompt()方法提示用户输入一些文本,并根据用户的选择决定是否返回用户输入的文本.


38.location是最有用的BOM对象之一,它提供了与当前窗口中加载的文档有关的信息,还提供了一些导航功能。包括属性hash,host,hostname,href,pathname,port.protocol,search. 常用方法如下:

38.1 location.assign()设置浏览器的位置。

38.2  replace()方法也可以改变浏览器的位置,但不会留下历史记录。

38.3 reload() 方法则以最有效的方式加载。


39.navigator是包含浏览器信息的BOM对象。属性包括:appCodeName,appName,appMinorVersion,appVersion,buildID,cookieEnabled,cpuClass,javaEnabled(),language,mimeType,onLine,opsProfile,oscpu,platform,plugins,preference(),product,productSub,register-ContentHandler(),register-ProtocolHandler(),securityPolicy,systemLanguage,taintEnabled().userAgent,userLanguage,userProfile,vendor,vendorSub.


40.screen对象用来表明客户端的能力。

41.history对象保存着用户上网的历史记录。拥有方法go(),back(),forward().


42.档对象模型(Document Object Model,简称DOM),是 W3C组织推荐的处理可扩展标志语言的标准编程接口。
1级DOM在1998年10月份成为W3C的提议,由DOM核心与DOM HTML两个模块组成。DOM核心能映射以XML为基础的文档结构,允许获取和操作文档的任意部分。DOM HTML通过添加HTML专用的对象与函数对DOM核心进行了扩展。
2级DOM通过对象接口增加了对鼠标和用户界面事件(DHTML长期支持鼠标与用户界面事件)、范围、遍历(重复执行DOM文档)和层叠样式表(CSS)的支持。同时也对DOM 1的核心进行了扩展,从而可支持XML命名空间。
3级DOM通过引入统一方式载入和保存文档和文档验证方法对DOM进行进一步扩展,DOM3包含一个名为“DOM载入与保存”的新模块,DOM核心扩展后可支持XML1.0的所有内容,包括XML Infoset、 XPath、和XML Base。



43.Node类型的12个数值常量:ELEMENT_NODE(1);ATTRIBUTE_NODE(2),TEXT_NODE(3),CDATA_SECTION_NODE(4),ENTITY_REFERENCE_NODE(5),ENTITY_NODE(6),PROCESSING_INSTRUCTION_NODE(7),COMMENT_NODE(8),DOCUMENT_NODE(9),DOCUMENT_TYPE_NODE(10),DOCUMENT_PRAGMENT_NODE(11),NOTATION_NODE(12).
43.1IE不支持NODE类型。
43.2 NODE类型含有nodeName,nodeValue,childNode(包含previousSibling,nextSibling),parentNode,ownerDocument属性。其中childNode含有item()方法。
43.3 含有hasChildNodes()方法确定是否有子节点。
43.4 appendChild()表示向childNodes列表的末尾添加一个节点。
43.5insertBefor()表示插入一个节点。
43.6replaceChild()表示替换一个节点。
43.7removeChild()表示删除一个节点。
43.8cloneNode()表示复制节点参数true表示深复制,参数false表示浅复制。


44.Document类型的常用属性:
44.1 nodeType=9
44.2 nodeName="#document"
44.3 nodeValue=null
44.4 parentNode=null
44.5 documentElement=html
44.6 document.body=body
44.7 document.doctype=DOCTYPE
44.8 document.title=title
44.9 document.URL=URL
44.10document.domain=domain
44.11 document.referrer=
44.12 getElementById()表示通过ID寻找元素。ID不区分大小写。
44.13  getElementsByTagName()表示通过标签寻找元素。标签亦不区分大小写。
44.14 anchors,applets,forms,images,links.
44.15 document.implementation表示文档的相关信息。
44.16 document.hasFeature()表示检测文档。
44.17 document.write()原样写入。
44.18 document.writeln() 字符串后加换行符。
44.19 document.open()打开网页的输出流。
44.20 document.close()关闭网页的输出流。
44.21 document.createElement()创建新元素。


45.window.onload事件处理程序,表示等页面完全加载之后延迟执行函数。



46.Element类型的常用属性如下,但不同的元素有不同的属性和方法。
46.1 nodeType=1
46.2 nodeName为元素的标签名。
46.3 nodeValue=null
46.4 parentNode可能为文档或元素节点。
46.5getAttribute(),setAttribute(),removeAttribute()分别表示取得,设置,去除特性。
46.6document.createElement()创建新元素。


47.xmlns是XML Namespaces的缩写,中文名称是XML( 标准通用标记语言的子集)命名空间。
使用语法: xmlns:namespace-prefix="namespaceURI" 
 </f:table>与仅仅使用前缀不同,我们为 <table> 标签添加了一个 xmlns 属性,这样就为前缀赋予了一个与某个命名空间相关联的限定名称。

48.在DOM2中,Node类型包含以下新的属性,在新的相关方法中,除了增加第一个命名空间的参数外,其余基本相同。
48.1 localName, 不带命名空间前缀的节点名称。
48.2 namespaceURI,命名空间URI
48.2.2contentDocument表示框架和内嵌框架(同原来的HTMLFrameElement/ HTMLIFrameElement).
48.2.3 属性style的值与 CSS中对应的样式名基本一致。
48.3.1prefix,命名空间前缀。
48.3.2 DocumentType类型增加了三个属性 publicId,systemId,internalSubset.
48.3.3 isSupported()方法用于确定当前节点具有什么能力。
48.3.4 isSameNode(),isEqualNode()表示比较两个节点。
48.4 document.createElementNS(namespaceURI,tagName):使用给定的tagName创建一个属于命名空间namespaceURI的新元素。
48.5 document.createAttributeNS(namespaceURI,attributeName); 使用给定的attributeName创建一个属于命名空间 namespaceURI的新特性。
48.6 documtne.getElementsByTagNameNS(namespaceURI,tagName): 返回属于命名空间namespaceURI的 tagName元素的NodeList.
48.6.2 importNode()从一个文档中取得一个节点,然后将其导入到另一个文档,使其成为这个文档结构的一部分。
48.6.3document.defaultView.getComputedStyle()方法表示返回一个CSSStyleDeclaration对象,其中包含当前元素的所有计算的样式。IE中为currentStyle属性。
48.7element类型的新增方法。
48.7.1 getAttributeNS(namespaceURI,localName): 取得属于命名空间namespaceURI且名为localName的特性。
48.7.2 getAttributeNodeNS(namespaceURI,localName):取得属于命名空间namespaceURI且名为localName的特性节点。
48.7.3 getElementsByTagNameNS(namespaceURI,tagName):返回属于命名空间namespaceURI的tagName元素的NodeList.
48.7.4 hasAttributeNS(namespaceURI,localName):确定当前元素是否有一个名为localName的特性,且其命名空间为namespaceURI,另外,DOM2级核心也增加了一个hasAttribute()方法,用于不考虑命名空间的情况。
48.7.5 removeAttributeNS(namespaceURI,localName):删除属于命名空间namespaceURI且名为localName的特性.
48.7.6 setAttributeNS(namespaceURI,qualifiedName,value):设置属于命名空间namespaceURI且名为qualifiedName的特性的值为value.
48.7.7 setAttributeNodeNS(attNode):设置属于命名空间namespaceURI的特性节点。



49.DOM3为DOM类型增加了以下方法:
49.1 isDefaultNamespace(namespaceURI):在指定的 namespaceURI是当前节点的默认命名空间的情况下返回 true.
49.2 lookupNamespaceURI(PREFIX): 返回给定prefix的命名空间。
49.3 lookupPrefix(namespaceURI): 返回给定namespaceURI的前缀.


50.CSSRule 对象是一个基类,用于 定义CSS 样式表中的任何规则,包括规则集(rule sets)和 @ 规则(at-rules)。规则存在若干种类型。所有这些类型在 CSSRule 接口共享的通用属性并不多,大部分类型都拥有专门针对特定规则类型的属性。

51.文档遍历的两种类型:NodeIterator,TreeWalker.
51.1 document.createNodeIterator(root,whatToShow,filter,entityReferenceExpansion).第一个参数为根节点。第二个参数为要访问节点的数字代码。第三个参数是一个NodeFilter对象,或一个表示应该接受还是拒绝某种特定节点的函数。第四个参数表示是否扩展实体应用。主要方法有nextNode(),previousNode().
51.2document.createTreeWalker(root,whatToShow,filter,entityReferenceExpansion).主要方法有nextNode(),previousNode(),parentNode(),firstChild(),lastChild(),nextSibling(),previousSibling.

52.document.createRange()用于创建DOM范围。
52.1selectNode()接受一个DOM节点并填充范围。
52.2selectNodeContents()接受一个DOM节点并填充范围。
52.3deleteContents()用于删除范围所包含的内容。
52.4extractContents()表示删除范围内容,同时作为返回值。
52.5insertNode()可以表示插入范围。
52.6collapse()表示折叠范围。

53.IE不支持DOM范围,但支持文本范围,相关操作如下document.body.createTextRange()表示创建文本范围,相关方法如下:
53.1 findText()寻找范围。
53.2move()
53.3moveStart()
53.4moveEnd()
53.5expand()
53.6text属性表示范围的内容。
53.7pasteHTML()表示在范围中插入HTML.
53.8collapse折叠范围。



54.DOM0就是直接通过 onclick写在html里面的事件, 比如: < input onclick ="alert(1)" />
DOM2是通过addEventListener绑定的事件/removeEventListener()删除, 还有IE下的DOM2事件通过attachEvent绑定,detachEvent()删除。
DOM3是一些新的事件, 区别DOM3和DOM2的方法我感觉是DOM3事件有分大小写的,DOM2没有;


55.//定义对象EventUtil
var  EventUtil = {
     /**
      * 添加事件监听
      * @param element html元素
      * @param type 事件类型 例如 click,load
      * @param handler 监听函数
      */
     addHandler :  function (element, type, handler) {
         if  (element.addEventListener) {
             element.addEventListener(type, handler,  false );
         else  if  (element.attachEvent) {
             element.attachEvent( "on"  + type, handler);
         else  {
             element[ "on"  + type] = handler;
         }
     },
     /**
      * 移除事件监听
      * @param element html元素
      * @param type 事件类型 例如 click,load
      * @param handler 要移除的监听函数
      */
     removeHandler :  function (element, type, handler) {
         if  (element.removeEventListener) {
             element.removeEventListener(type, handler,  false );
         else  if  (element.detachEvent) {
             element.detachEvent( "on"  + type, handler);
         else  {
             element[ "on"  + type] =  null ;
         }
     },
     /**
      * 获取Event事件对象
      */
     getEvent :  function (event) {
         return  event || window.event;
     },
     /**
      * 获取事件源 例如 用鼠标点击页面上某个元素,即是获取被点击的元素
      */
     getTarget :  function (event) {
         return  event.target || event.srcElement;
     }
}
 
/**
  * 获取style 风格
  * @param el html元素
  * @param style 具体的风格名称 比如width height
  */
var  getStyle =  function (el, style) {
     if  (el.currentStyle) {
         style = style.replace(/\-(\w)/g,  function (all, letter) {
             return  letter.toUpperCase();
         });
         var  value = el.currentStyle[style];
         return  value;
     else  {
         return  document.defaultView.getComputedStyle(el,  null )
                 .getPropertyValue(style);
     }
}
/**
  * 显示或隐藏元素  如果元素是显示的则隐藏,如果是隐藏则显示
  * @param element html元素
  */
var  toggleDisplay =  function (element) {
     var  display = getStyle(element,  "display" );
     if  (display ==  "none" ) {
         element.style.display =  "block" ;
     else  {
         element.style.display =  "none" ;
     }
}



56.表单操作类型为HTMLFormElement,除了继承HTMLElement的属性及方法外,还有以下属性和方法:
56.1 acceptCharset: 服务器能够处理的字符集,等价于HTML中的accept-charset特性。
56.2 action:               接受请求的URL,
56.3 elements:          表单中所有控件的集合。
56.4 enctype:            请求的编码类型
56.5 length:               表单中空件的数量
56.6 method:             要发送的HTTP请求类型,通常是"get" /"post"
56.7 name:                表单的名称
56.8 reset():               将表单重置为默认值。
56.9 submit():            提交表单。
56.10target:               用于发送请求和接收响应的窗口名称。

57.表单字段的属性与方法:
57.1 disabled:是否可用
57.2 form: 指向当前字段所属表单的指针
57.3name: 名称
57.4readOnly:是否只读
57.5tabIndex:当前字段的切换序号
57.6type:当前字段的类型
57.7value:当前字段提交给服务器的值。
57.8focus() 激活表单字段。
57.9blur()  转移焦点。
57.10 change() 字段值改变的。

58. clipboardData 对象 提供了对于预定义的剪贴板格式的访问,以便在编辑操作中使用。
58.1clearData 通过 dataTransfer 或 clipboardData 对象从剪贴板删除一种或多种数据格式。
58.2getData 通过 dataTransfer 或 clipboardData 对象从剪贴板获取指定格式的数据。
58.3setData 以指定格式给 dataTransfer 或 clipboardData 对象赋予数据。


59.WYSIWYG(What You See Is What You Get)所见即所得。它使得用户在视图中所看到文档与该文档的最终产品具有相同的样式,也允许用户在视图中直接编辑文本、图形、或文档中的其他元素。 WYSIWYG 语言常常比标签语言容易使用,因为标签语言并没有对各种改变提供即时的视觉上的反馈。
即在页面中嵌入一个包含空HTML的iframe,并设置designMode属性为on.
59.1 document.execCommand()表示对文档执行预定义的命令。
59.2 queryCommandEnabled()用来检测是否可以针对当前选择的文本或位置执行某个命令。
59.3 queryCommandState()用于确定是否已将指定命令应用到了选择的文本。
59.4 queryCommandValue()用于取得执行命令时传入的值。
59.5iframe.getSelection()可以确定实际选择的文本。

60.DOMParser 对象, 解析 XML 标记来创建一个文档。

DOMParser 对象解析 XML 文本并返回一个 XML Document 对象。要使用 DOMParser,使用不带参数的构造函数来实例化它,然后调用其 parseFromString() 方法:

var doc = (new DOMParser()).parseFromString(text)

IE 不支持 DOMParser 对象。相反,它支持使用 Document.loadXML() 的 XML 解析。



61.XMLSerializer 对象。 序列化 XML 文档和节点。

XMLSerializer 对象使你能够把一个 XML 文档或 Node 对象转化或“序列化”为未解析的 XML 标记的一个字符串。

要使用一个 XMLSerializer,使用不带参数的构造函数实例化它,然后调用其 serializeToString() 方法:

var text = (new XMLSerializer()).serializeToString(element)

IE 不支持 XMLSerializer 对象。相反,它通过 Node 对象的 xml 属性使 XML 文本变为可用。


62.在DOM3级XPath规范定义的类型中,最重要的两个类型是XPathEvaluator和XPathResult.XPathEvaluator用于在特定的上下文中对XPath表达式求值,包括以下方法。

62.1 createExpression(expression,nsreaolver);将XPath表达式及相应的命名空间信息转换成一个XPathExpression,这是查询的编译版。多次使用同一个查询时很有用。

62.2 createNSResolver(node);根据node的命名空间信息创建一个新的 XPathNSResolver对象,在基于使用命名空间的XML文档求值时,需要使用 XPathNSResolver对象。

62.3 evaluate(expression,context,nsresolver,type,result);在给定的上下文中,基于特定的命名空间信息来对XPath表达式求值。剩下的参数指定如何返回结果。


63.selectSingleNode() 方法查找和 XPath 查询匹配的一个节点。

这个特定于 IE 的方法计算一个 XPath 表达式,使用这个节点作为 context 节点。它返回找到的第一个匹配节点,如果没有匹配的节点就返回 null。

这个 selectSingleNode() 方法只在 XML 文档节点上存在,在 HTML 文档中不存在。注意,既然 Document 对象是它们自己的节点,这个方法可以应用于整个 XML 文档。


64.selectNodes() 方法用一个 XPath 查询选择节点。这个特定于 IE 的方法计算一个 XPath 表达式,使用该节点作为查询的根节点,并且将结果作为一个 NodeList 返回。这个 selectNodes() 方法只用于 XML 文档节点,不用于 HTML 文档节点。


65.transformNode() 方法使用 XSLT 把一个节点转换为一个字符串。

这个特定于 IE 的方法根据一个 XSLT 样式表指定的规则来转换一个 Node 及其子孙,并将结果作为一个未解析的字符串返回。

这个 transformNode() 方法只在 XML 文档节点上存在,在 HTML 文档中不存在。



66.E4X(ECMAScript for XML)是一种在ECMAScript(见ECMA-262,包括ActionScript、JavaScript等语言实现)标准的基础上加入的动态XML支持的程序语言扩展。

E4X已被遗弃。在Firefox 17默认网页中已被禁用,Firefox 20浏览器默认禁用,并已在Firefox 21删除。官方推荐使用DOMParser / XMLSerializer或非jxon算法代替。



67.AJAX即“ A synchronous J avascriptAnd X ML”(异步JavaScript和XML),是指一种创建交互式 网页应用的网页开发技术。
AJAX = 异步 JavaScriptXML标准通用标记语言的子集)。
AJAX 是一种用于创建快速动态网页的技术。
通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面。


68.XHR——XMLHttpRequest对象,向服务器发送请求和解析服务器响应提供了流畅的接口。XmlHttpRequest可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。构造函数为xhr = new XMLHttpRequest();
68.1//open方法 创建一个新的http请求,并指定此请求的方法、URL以及验证信息(用户名/密码)
xhr.open("get","test.txt",true);
/*第一个参数是请求方式,一般用get与post方法,与form标签的method类似
第二个参数是请求的URL
第三个参数是请求是同步进行还是异步进行,true表示异步
68.2xhr.send(null);//调用了send方法后才会发出请求

68.3有四个相关属性会被填充:

1>. responseText:作为响应主体被返回的文本

2>. responseXML:如果响应内容的类型是”text/xml”或”application/xml”,这个属性将保存包含着相应数据的XML文档

3>. status:响应的HTTP状态(200,404,500等)

4>. statusText:HTTP状态说明


69.XDR/ XDomainRequest对象为一个允许脚本连接任何服务器并且交互数据的安全,可信,轻量级数据服务。开发使用 XDomainRequest 对象发送有跨域安全当前ajax请求。


70. JSON( JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于 ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括 C、C++、 C#Java、JavaScript、 PerlPython等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。


71.作用域安全的构造函数在进行属性赋值之前会this对象是否是正确类型的实例,如果不是那么创建新的实例并返回,改造一下上面的构造函数。
在JavaScript中构造函数其实是一个使用new操作符调用的函数,在使用呢我调用时, 构造函数内部用到的this对象会指向新创建的对象。
如果忘记使用new操作符来调用构造函数的情况下,由于this对象是在运行期绑定的所以直接调用Person(),this会映射到全局对象window上,导致错误对象属性的意外增加。

function Person(name,age,job){ if( this instanceof Person){ this.name= name; this.age= age; this.job= job; } else { return new Person(name,age,job); } }

72.惰性载入表示函数执行的分支只会在函数第一次掉用的时候执行,在第一次调用过程中,该函数会被覆盖为另一个按照合适方式执行的函数,这样任何对原函数的调用就不用再经过执行的分支了。


73.函数绑定,在JavaScript与DOM交互中经常需要使用函数绑定,定义一个函数然后将其绑定到特定DOM元素或集合的某个事件触发程序上,绑定函数经常和回调函数及事件处理程序一起使用,以便把函数作为变量传递的同时保留代码执行环境。



74.柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。



75.函数节流技术的主要思路是,通过一个定时器,阻断连续重复的函数调用。对于我们自己内部使用的函数,这通常意义不大,也不推荐使用这个技术,它可能会丢失对某些数据的处理。但是对于在用户界面调用的函数,却非常有意义。函数节流技术的意义在于在用户察觉范围外,降低函数调用的频率,从而提升性能。


76.JavaScript中的另一个机制:cookie,则可以达到真正全局变量的要求。 cookie是浏览器 提供的一种机制,它将document 对象的cookie属性提供给JavaScript。可以由JavaScript对其进行控制,而并不是JavaScript本身的性质。cookie是存于用户硬盘的一个文件,这个文件通常对应于一个域名,当浏览器再次访问这个域名时,便使这个cookie可用。因此,cookie可以跨越一个域名下的多个网页,但不能跨越多个域名使用。


77.客户端存储---利用IE userData持久化数据。IE5及以上版本的浏览器是通过document元素后面附加一个专属“DHTML行为”来实现客户存储的。

旦给元素赋予了“userData“行为,该元素就拥有load()和save()方法。load()方法用于载入存储的数据。使用它的时候必须传递一个字符串作为参数----类似于一个文件名,该参数用来指定要载入的存储数据。当数据载入后,就可以通过该元素的属性来访问这些名、值对形式的数据,可以使用getAttribute()来查询这些数据。通过setAttribute()方法来设置属性,然后调用save()方法可以存储新的数据;removeAttribute()方法删除数据然后调用save()方法再保存一下。


78.DOM 存储 API 包含两种使用文档对象模型 (DOM) 以安全方式保留客户端数据的相关机制,即 sessionStoragelocalStorage。 Internet Explorer 8 中引入了这些对象。
注意  对于以前版本的 Internet Explorer,持久数据存储是由 userData 行为实现的。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值