7_JavaScript_Math对象_字符串对象_浏览器对象BOM

Math对象

  1. Math 对象用于执行数学任务。
  • Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math()。

算数值

JavaScript 提供 8 种可被 Math 对象访问的算数值:

  1. Math.PI 返回圆周率(约等于3.14159)。
  • Math.E 返回算术常量 e,即自然对数的底数(约等于2.718)。
  • Math.SQRT2 返回 2 的平方根(约等于 1.414)。
  • Math.SQRT1_2 返回返回 1/2 的平方根(约等于 0.707)。
  • Math.LN2 返回 2 的自然对数(约等于0.693)。
  • Math.LN10 返回 10 的自然对数(约等于2.302)。
  • Math.LOG2E 返回以 2 为底的 e 的对数(约等于 1.443)。
  • Math.LOG10E 返回以 10 为底的 e 的对数(约等于0.434)。

document.write(Math.PI);

数值取整

  1. ceil(x) 对数进行上舍入。
  • floor(x) 对数进行下舍入。
  • round(x) 把数四舍五入为最接近的整数。

document.write(Math.floor(3.6));

随机数

  1. random() 返回 0 ~ 1 之间的随机数。
  • 注意并不包括0和1

document.write(Math.random());

三角函数

  1. cos(x) 返回数的余弦。
  • acos(x) 返回 x 的反余弦值。
  • sin(x) 返回数的正弦。
  • asin(x) 返回 x 的反正弦值。
  • tan(x) 返回角的正切。
  • atan(x) 以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。

document.write(Math.cos(Math.PI/2));

其他方法

  1. max(x,y) 返回 x 和 y 中的最高值。
  • min(x,y) 返回 x 和 y 中的最低值。
  • abs(x) 返回 x 的绝对值。
  • atan2(y,x) 返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。
  • exp(x) 返回 e 的指数。
  • log(x) 返回数的自然对数(底为e)。
  • pow(x,y) 返回 x 的 y 次幂。
  • valueOf() 返回 Math 对象的原始值

document.write(Math.max(5,10));

字符串对象

  1. 字符串是非常重要的数据类型,除了基本字符串外,JavaScript还提供了字符串的引用类型--字符串对象。
  • 字符串对象提供了字符串检索、替换、连接等方法...
  • 可以通过new 关键字创建字符串对象
  • var str=new String()
  • length 属性返回字符串的长度(字符数)。
var str1 = "hello";
var str2 = new String()
document.write(typeof str1);
document.write(typeof str2);
document.write(str1.length);
document.write(str2.length);

字符串与数字的转换

  1. toString() 返回字符串。可以将数值转换成字符串。
  • 如果需要获取数值的二进制、八进制、十六进制的字符串表示,则可以给toString()传递一个表示进制的的整数
  • parseInt()函数可以将字符串转换成整数
  • parseFloat()函数可以将字符串转换浮点数
  • Number()函数可以将任意类型的值转换数值。
var str2 = num.toString();
var str2 = num.toString(2);
var str2 = parseInt(num);

字符串对象的常用方法

  1. charAt() 返回在指定位置的字符。
  • charCodeAt() 返回在指定的位置的字符的 Unicode 编码。
  • concat() 连接字符串。
  • slice(n,m) 提取字符串n到m之间的片断(不包括m位置的字符串),并在新的字符串中返回被提取的部分。
  • substring() 提取字符串中两个指定的索引号之间的字符。大多数情况和上一个作用相同,当参数为负值时会有不同,但这种情况较少用
  • substr(n,m) 从起始索引号提取字符串中指定数目的字符。
  • split() 把字符串分割为字符串数组。
  • indexOf() 检索字符串,返回某个指定的字符串值在字符串中首次出现的位置。注意,如果查找不到会返回 -1
  • lastIndexOf() 从后向前搜索字符串。
  • toLowerCase() 把字符串转换为小写。
  • toUpperCase() 把字符串转换为大写。
  • match() 找到一个或多个正则表达式的匹配。(正则表达式后续课程会讲)
    该方法会返回一个数组,数组中包含了所有符合条件的文本。
  • replace() 替换与正则表达式匹配的子串,并返回替换后的字符串,注意原字符串不会改变
  • search() 检索与正则表达式相匹配的值。查找与参数模式相匹配的文本,并返回该文本的位置。若无则返回null(indexOf()会返回-1).与indexOf()相似。
  • ......
    需要注意的是,JavaScript 的字符串是不可变的(immutable),String 类定义的方法都不能改变字符串的内容。像 String.toUpperCase() 这样的方法,返回的是全新的字符串,而不是修改原始字符串。
var str1 = "hello";
var str2 = new String("javascript");
document.write(str2.charAt(1)+'<br>');
document.write(str2.charCodeAt(1)+'<br>');
document.write(str2.concat('a')+'<br>');

浏览器对象BOM

基本概念

  1. BOM是Browser Object Model的缩写,简称浏览器对象模型
  • BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性
  • 基本的BOM体系结构图
  • 能利用BOM做什么?
    BOM提供了一些访问窗口对象的一些方法,我们可以用它来移动窗口位置,改变窗口大小,打开新窗口和关闭窗口,弹出对话框,进行导航以及获取客户的一些信息如:浏览器品牌版本,屏幕分辨率。但BOM最强大的功能是它提供了一个访问HTML页面的一入口——document对象,以使得我们可以通过这个入口来使用DOM的强大功能!!!

window对象的方法和属性

window对象是浏览器窗口对文档提供的一个现实的容器,代表打开的浏览器窗口,是每一个加载文档的父对象

window的属性和方法调用方法:window.属性,window.方法 也可以直接调用省略 window.

  1. 对话框

    • alert() 显示带有一段消息和一个确认按钮的警告框。
    • confirm() 显示可提示用户输入的对话框。返回值为布尔值
    • prompt() 显示带有一段消息以及确认按钮和取消按钮的对话框。
      第一个参数是提示,第二个参数是默认值;
      返回值为输入的值,取消返回null
  2. 窗体控制

    • open() 打开一个新的浏览器窗口或查找一个已命名的窗口。
      • URL:声明了要在新窗口中显示的文档的 URL。
      • name:声明了新窗口的名称或者窗口目标。
      • features:声明了新窗口要显示的标准浏览器的特征。
      • 窗口的属性:
        • 常用:
          • width:新建窗口宽度
          • heigth:新建窗口高度
          • top:左上角垂直坐标
          • left:左上角水平坐标
        • 其他不太常用的属性:
          • toolbar:指定窗口是否有标准工具栏。当该选项的值为1或yes时,表示有标准工具栏,当该选项的值为0或no时,表示没有标准工具栏;
          • resizable:指定窗口是否可改变大小,选项的值及含义与toolbar相同;
          • ocation:指定窗口是否有地址工具栏,选项的值及含义与toolbar相同;
          • directories:指定窗口是否有链接工具栏,选项的值及含义与toolbar相同;
          • status:指定窗口是否有状态栏,选项的值及含义与toolbar相同;
          • menubar:指定窗口是否有菜单,选项的值及含义与toolbar相同;
          • scrollbar:指定当前窗口文档大于窗口时是否有滚动条,选项的值及含义与 toolbar相同;
          • ........
    • close() 关闭浏览器窗口。
  3. 定时器

    • setInterval() 按照指定的周期(以毫秒计)来调用函数或计算表达式。
    • setTimeout() 在指定的毫秒数后调用函数或计算表达式。
    • clearInterval() 取消由 setInterval() 设置的 timeout。
    • clearTimeout() 取消由 setTimeout() 方法设置的 timeout。
    var timeId = setTimeout(test,10);
    clearTimeout(timeId);
    
  4. 其他方法

    • print() 打印当前窗口的内容。
    • blur() 把键盘焦点从顶层窗口移开。
    • createPopup() 创建一个 pop-up 窗口。
    • focus() 把键盘焦点给予一个窗口。
    • moveBy() 可相对窗口的当前坐标把它移动指定的像素。
    • moveTo() 把窗口的左上角移动到一个指定的坐标。
    • resizeBy() 按照指定的像素调整窗口的大小。
    • resizeTo() 把窗口的大小调整到指定的宽度和高度。
    • scrollBy() 按照指定的像素值来滚动内容。
    • scrollTo() 把内容滚动到指定的坐标。
  5. Window 对象属性

    • 掌握部分
      • innerWidth 返回窗口的文档显示区的宽度。
      • innerHeight 返回窗口的文档显示区的高度。
    • 了解部分
      • name 设置或返回窗口的名称。
      • opener 返回对创建此窗口的窗口的引用。
      • closed 返回窗口是否已被关闭。
      • self 返回对当前窗口的引用。
      • top 返回最顶层的先辈窗口。
      • outerheight 返回窗口的外部高度。
      • outerwidth 返回窗口的外部宽度。
      • status 设置窗口状态栏的文本。
      • ......

History对象的常用方法

history对象有back和forward两个方法,它可以跳转到当前页的上一页和下一页,可以用length属性查看客户端浏览器的历史列表中访问的网页个数

  1. back() 加载 history 列表中的前一个 URL。
  • forward() 加载 history 列表中的下一个 URL。
  • go() 加载 history 列表中的某个具体页面。

Location 对象

  1. Location 对象的属性
    • href 设置或返回完整的 URL。
    • host 设置或返回主机名和当前 URL 的端口号。
    • hash 设置或返回从井号 (#) 开始的 URL(锚)。
    • hostname 设置或返回当前 URL 的主机名。
    • pathname 设置或返回当前 URL 的路径部分。
    • port 设置或返回当前 URL 的端口号。
    • protocol 设置或返回当前 URL 的协议。
    • search 设置或返回从问号 (?) 开始的 URL(查询部分)。
  2. Location 对象的方法
    • assign() 加载新的文档。
    • reload() 重新加载当前文档。
      如果该方法没有规定参数,或者参数是 false,它就会用 HTTP 头 If-Modified-Since 来检测服务器上的文档是否已改变。如果文档已改变,reload() 会再次下载该文档。如果文档未改变,则该方法将从缓存中装载文档。这与用户单击浏览器的刷新按钮的效果是完全一样的。 如果把该方法的参数设置为 true,那么无论文档的最后修改日期是什么,它都会绕过缓存,从服务器上重新下载该文档。这与用户在单击浏览器的刷新按钮时按住 Shift 健的效果是完全一样。
    • replace() 用新的文档替换当前文档。
      replace() 方法不会在 History 对象中生成一个新的记录。当使用该方法时,新的 URL 将覆盖 History 对象中的当前记录。

Screen 对象

  1. availHeight 返回显示屏幕的高度 (除 Windows 任务栏之外)。
  • availWidth 返回显示屏幕的宽度 (除 Windows 任务栏之外)。
  • height 返回显示屏幕的高度。
  • width 返回显示器屏幕的宽度。
  • bufferDepth 设置或返回调色板的比特深度。
  • ......

Navigator 对象属性

  1. appCodeName 返回浏览器的代码名。
  • appMinorVersion 返回浏览器的次级版本。
  • appName 返回浏览器的名称。
  • appVersion 返回浏览器的平台和版本信息。
  • cookieEnabled 返回指明浏览器中是否启用 cookie 的布尔值。
  • userAgent 返回由客户机发送服务器的 user-agent 头部的值
  • onLine 返回指明系统是否处于脱机模式的布尔值。
  • ......
// 动态显示时间
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
    function clock() {
        var today = new Date();
        var hours = today.getHours();
        var minutes = today.getMinutes();
        var seconds = today.getSeconds();
        var str = "现在时间:"
        if (hours < 12) {
            str+='上午';
        }else {
            str+='下午';
        }
        str+=hours+'时'+minutes+'分'+seconds+'秒';
        // document.write(str+'<br>')
        var clock=document.getElementById('clock')
        clock.value=str

    }
    setInterval('clock()',1000);
    </script>
    <input type="text" id="clock" size="40">
    <input type="button" id="clock" size="40"  value="停止时间" onclick="clearInterval(timeId) ">
</body>
</html>
// 比赛
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
        var guojing=new Object();
            guojing.name="郭靖"
            guojing.HP=500;
            guojing.gj=90;
            guojing.sd=60;
            guojing.skill=new Array('亢龙有悔','飞龙在天','见龙在田','鸿渐于陆','潜龙勿用')

        var ouyang=new Object();
            ouyang.name='欧阳锋';
            ouyang.HP=800;
            ouyang.gj=100;
            ouyang.sd=40;
            ouyang.skill=new Array('灵蛇棍法','凤凰神力','颠倒阴阳','逆转静脉','天蟾神功')

        function whoGjwho(a,b) {
            return a.sd*Math.random()>b.sd*Math.random()?[a,b]:[b,a];
        }

        function game() {
            var skillIndex=Math.floor(Math.random()*5)
            var fight = whoGjwho(guojing,ouyang);
            var attacker = fight[0];
            var defender = fight[1];
            var damage=attacker.gj*Math.random()-defender.gj*Math.random();
                if(damage<=0){
                    damage=0
                }else{
                    damage=Math.ceil(damage);
                }
            defender.HP-=damage;

            document.write(attacker.name+"使用了一招"+attacker.skill[skillIndex]+'<br>')
            document.write(defender.name+"损失了"+damage+'点HP'+'<br>')

            if (defender.HP>0) {
                document.write(defender.name+"的HP:"+defender.HP+'<br>'+attacker.name+'的HP:'+attacker.HP+'<hr>')
            }else{
                document.write(defender.name+'战败了'+'<br>'+attacker.name+'取得了胜利!'+'<br>')
                alert(attacker.name+'取得了胜利!'+'Gmame Over!')
                clearInterval(zd)
            }
        }
        var zd=setInterval('game()',50)
    </script>

</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,039评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,223评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,916评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,009评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,030评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,011评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,934评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,754评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,202评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,433评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,590评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,321评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,917评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,568评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,738评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,583评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,482评论 2 352

推荐阅读更多精彩内容