发表于: 2020-02-25 23:09:34

1 1804


今天完成的事情:今天学习了jsRegExp 对象的后面的修饰符等等部分以及JavaScript Window - 浏览器对象模型

明天计划的事情:继续学习js的内容
遇到的问题:还是使用不太熟练需要多加练习
收获:修饰符的部分

RegExp 修饰符

修饰符用于执行不区分大小写和全文的搜索。

i - 修饰符是用来执行不区分大小写的匹配。

g - 修饰符是用于执行全文的搜索(而不是在找到第一个就停止查找,而是找到所有的匹配)。

在字符串中不区分大小写找"runoob"

var str = "Visit RUnoob";

var patt1 = /runoob/i;

以下标记的文本是获得的匹配的表达式:

Visit RUnoob

实际运行

<script>
    var str = "Visit RUnoob";
    var patt1 = /runoob/i;
    document.write(str.match(patt1));
</script>

运行结果

全文查找 "is"

var str="Is this all there is?";

var patt1=/is/g;

以下标记的文本是获得的匹配的表达式:

Is this all there is?

实际运行

<script>
    var str = "Is this all there is?";
    var patt1 = /is/g;
    document.write(str.match(patt1));
</script>

运行结果

全文查找和不区分大小写搜索 "is"

var str="Is this all there is?";

var patt1=/is/gi;

以下 标记的文本是获得的匹配的表达式:

Is this all there is?

实际运行

<script>
    var str = "Is this all there is?";
    var patt1 = /is/gi;
    document.write(str.match(patt1));
</script>

运行结果

还有test()

test()方法搜索字符串指定的值,根据结果并返回真或假。

下面的示例是从字符串中搜索字符 "e" :

var patt1=new RegExp("e");

document.write(patt1.test("The best things in life are free"));

由于该字符串中存在字母 "e",以上代码的输出将是:

true

实际运行

<script>
    var patt1 = new RegExp("e");
    document.write(patt1.test("The best things in life are free"));
</script>

运行结果

确实如此

当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)

比如

<script>
    var str = 'runoob';
    var patt1 = new RegExp('\\w''g'); // 有转义作为正则表达式处理
    var patt2 = new RegExp('\w''g');  // 无转义作为字符串处理
    var patt3 = /\w+/g;  // 与 patt1 效果相同
    document.write(patt1.test(str)) //输出 true
    document.write("<br>")
    document.write(patt2.test(str)) //输出 false
    document.write("<br>")
    document.write(patt3.test(str)) //输出 true
</script>

运行的结果

还有exec()

exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。

下面的示例是从字符串中搜索字符 "e" :

<script>
    var patt1 = new RegExp("e");
    document.write(patt1.exec("The best things in life are free"));
</script>

运行结果

JavaScript Window - 浏览器对象模型

浏览器对象模型 (BOM) 使 JavaScript 有能力与浏览器"对话"。

浏览器对象模型 (BOM)

浏览器对象模型(Browser Object Model (BOM))尚无正式标准。

由于现代浏览器已经(几乎)实现了 JavaScript 交互性方面的相同方法和属性,因此常被认为是 BOM 的方法和属性。

Window 对象

所有浏览器都支持 window 对象。它表示浏览器窗口。

所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。

全局变量是 window 对象的属性。

全局函数是 window 对象的方法。

甚至 HTML DOM 的 document 也是 window 对象的属性之一:

window.document.getElementById("header");

与此相同:

document.getElementById("header");

Window 尺寸

有三种方法能够确定浏览器窗口的尺寸。

对于Internet Explorer、Chrome、Firefox、Opera 以及 Safari:

window.innerHeight - 浏览器窗口的内部高度(包括滚动条)

window.innerWidth - 浏览器窗口的内部宽度(包括滚动条)

对于 Internet Explorer 8、7、6、5:

document.documentElement.clientHeight

document.documentElement.clientWidth

或者

document.body.clientHeight

document.body.clientWidth

实用的 JavaScript 方案(涵盖所有浏览器):例如

<p id="demo"></p>
<script>
    var w = window.innerWidth
        || document.documentElement.clientWidth
        || document.body.clientWidth;
    var h = window.innerHeight
        || document.documentElement.clientHeight
        || document.body.clientHeight;
    x = document.getElementById("demo");
    x.innerHTML = "浏览器window宽度: " + w + ", 高度: " + h + "。"
</script>

运行结果

测出了浏览器的模型

其他 Window 方法

记录一下一些其他方法:

window.open() - 打开新窗口

window.close() - 关闭当前窗口

window.moveTo() - 移动当前窗口

window.resizeTo() - 调整当前窗口的尺寸

定义全局变量与在 window 对象上直接定义属性差别。

1、全局变量不能通过 delete 操作符删除;而 window 属性上定义的变量可以通过 delete 删除

var num=123;

window.str="string";

delete num;

delete str;

console.log(num); //123

console.log(str); //str is not defined

//全局变量不能通过 delete 删除,因为通过 var 定义全局变量会有一个名为 [Configurable] 的属性,默认值为 false,所以这样定义的属性不可以通过 delete 操作符删除

2、访问未声明的变量会抛出错误,但是通过查询 window 对象,可以知道某个可能未声明的变量是否存在。

var newValue=oldValue; // 报错:oldValue is not defined

var newValue=window.oldValue; // 不会报错

console.log(newValue); // undefined

3、有些自执行函数里面的变量,想要外部也访问到的话,在 window 对象上直接定义属性。

这部分还不太清楚,明天继续进行学习


返回列表 返回列表
评论

    分享到