1. 理解:
- 除了正常运行模式(混杂模式),ES5添加了第二种运行模式:"严格模式"(strict mode)。
- 顾名思义,这种模式使得Javascript在更严格的语法条件下运行
2. 目的/作用
- 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为
1. 理解:
- 除了正常运行模式(混杂模式),ES5添加了第二种运行模式:"严格模式"(strict mode)。
- 顾名思义,这种模式使得Javascript在更严格的语法条件下运行
2. 目的/作用
- 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为
splice()方法,这个方法恐怕要算是最强大的数组方法了,它有很多种用法。splice()的主要用途是向数组的中部插入项,但使用这种方法的方式则有如下 3 种。
删除:可以删除任意数量的项,只需指定 2 个参数:要删除的第一项的位置和要删除的项数。
例如,splice(0,2)会删除数组中的前两项。
插入:可以向指定位置插入任意数量的项,只需提供 3 个参数:起始位置、0(要删除的项数)
和要插入的项。如果要插入多个项,可以再传入第四、第五,以至任意多个项。例如,
自从 ECMAScript 3 做出规定以后,就出现了确定某个对象是不是数组的经典问题。对于一个网页,
或者一个全局作用域而言,使用 instanceof 操作符就能得到满意的结果:
var arr = ["111","222","333"]; if(arr instanceof Array) { alert("arr is Array"); }
为了解决这个问题,ECMAScript 5 新增了 Array.isArray()方法。这个方法的目的是最终确定某
添加com Microsoft word 11.0 Object Library 引用
HTML5 为<script>元素定义了 async 属性。这个属性与 defer 属性类似,都用于改变处理脚本的行为。同样与 defer 类似,async 只适用于外部脚本文件,并告诉浏览器立即下载文件。但与 defer不同的是,标记为 async 的脚本并不保证按照指定它们的先后顺序执行。例如:
<!DOCTYPE html> <html> <head> <title>Example HTML Page</title> <script type="text/javascript" async src="example1.js"></script> <script type="text/javascript" async src="example2.js"></script> </head> <body> <!-- 这里放内容 --> </body> </html>
在以上代码中,第二个脚本文件可能会在第一个脚本文件之前执行。因此,确保两者之间互不依赖
HTML 4.01 为<script>标签定义了 defer 属性。这个属性的用途是表明脚本在执行时不会影响页
面的构造。也就是说,脚本会被延迟到整个页面都解析完毕后再运行。因此,在<script>元素中设置
defer 属性,相当于告诉浏览器立即下载,但延迟执行。
<!DOCTYPE html> <html> <head> <title>Example HTML Page</title> <script type="text/javascript" defer="defer" src="example1.js"></script> <script type="text/javascript" defer="defer" src="example2.js"></script> </head> <body> <!-- 这里放内容 --> </body> </html>
在这个例子中,虽然我们把<script>元素放在了文档的<head>元素中,但其中包含的脚本将延迟
public void ManipulateRangeText() { // Retrieve contents of first and second paragraphs string str1 = ThisDocument.Paragraphs[1].Range.Text; string str2 = ThisDocument.Paragraphs[2].Range.Text; // 两个自然段相互交换 Word.Range rng1 = ThisDocument.Paragraphs[1].Range; rng1.Text = str2; Word.Range rng2 = ThisDocument.Paragraphs[2].Range; rng2.Text = str1; // 显示结果 rng1.Select(); MessageBox.Show(rng1.Text, "ManipulateRangeText"); rng2.Select(); MessageBox.Show(rng2.Text, "ManipulateRangeText"); Object unit = Word.WdUnits.wdCharacter; Object count = -1; rng1.MoveEnd(ref unit, ref count); // Write new text for paragraph 1. rng1.Text = "new content for paragraph 1."; rng2.Text = "new content for paragraph 2."; // Pause to display the results. rng1.Select(); MessageBox.Show(rng1.Text, "ManipulateRangeText"); rng2.Select(); MessageBox.Show(rng2.Text, "ManipulateRangeText"); unit = Word.WdUnits.wdCharacter; count = 1; rng1.MoveEnd(ref unit, ref count); // Note that in C#, you must specify // both parameters--it's up to you // to calculate the length of the range. unit = Word.WdUnits.wdCharacter; count = rng2.Characters.Count; rng2.Delete(ref unit, ref count); // C# rng1.Text = str1; // C# rng1.InsertAfter(str2); rng1.Select(); }
Selection对象代表当前选择的area。在word应用程序中,假如你要让一段字符变成黑体,你必须首先选择该段文字,然后应用样式。在代码中也是同样的道理,你要首先定义selection的区域然后进行操作。你可以使用Selection对象在文档中进行选择,格式化,操作,添加文本等。
Selection对象是始终存在的,如果当前没有选择任何东西,那么它代表一个insertion point。因此,在操作Seleciton之前知道它包含的内容是非常重要的。
Tips: Selection对象与Range对象有很多成员是类似的,它们之间的区别是Selection对象指的是现实在图形界面的区域,而Range对象代表的区域是不可见的(当然通过调用方法可以使其可见)