js笔记(四)内置对象Math和Date()、浏览器对象模型BOM

大标题小标题备注
一、内置对象MathDate()1. Math 数学对象;
2. Date() 日期对象;
常用的数学对象:Math.PIabs(n)round(n)random()floor(n)ceil(n)pow(x,y)sqrt(n)min(3,4,5,6)max()sin(弧度)cos()tan()
获取日期:getFullYear()getMonth()getDate()getDay()getHours()getMinutes()getSeconds()getMillisecondsgetTimes()
设置日期:setFullYear(2008)setMonth(3)setDate(2)setHours(8)setMinutes(8)setSeconds()setMilliseconds(666)new Date("2008.8.8 10:30:23");
二、浏览器对象模型BOM1. window的方法;
2. window的事件;
3. window的子对象;
window的方法:alert()prompt()confirm()setInterval()setTimeout()open()close()
window的事件:onloadonscrollonresize()
window的子对象:historylocationnavigator

一、内置对象MathDate()

存储数据的载体称为变量,在对象中称为属性
功能实现的载体称为函数,在对象中称为方法
当只操作对象进行编程的时候,称为“面向对象编程”。

1. Math 数学对象

Math 对象不像 Date 和 String 那样是对象的类,因此没有构造函数 Math()。

常用的有:Math.PIabs(n)round(n)random()floor(n)ceil(n)pow(x,y)sqrt(n)min(3,4,5,6)max()sin(弧度)cos()tan()

console.dir(Math),查看内置对象 Math 身上所有的方法。
在这里插入图片描述
(1)Math.PI,数学中的圆周率的值;

(2)abs(n),取绝对值;

console.log(Math.abs(5));   //5
console.log(Math.abs(-5));  //5

(3)round(n),四舍五入取整;

console.log(Math.round(4.3));  //4
console.log(Math.round(4.7));  //5
console.log(Math.round(-4.7));  //-5

(4)random(),随机;

//获取 a~b 之间的随机数
function random(a,b){return Math.round(Math.random()*(b-a) + a);
}

(5)floor(n),向下取整;往小的整数取,效果与 parseInt() 对小数取整相同。

console.log(Math.floor(4.3));  //4
console.log(Math.floor(4.7));  //4
console.log(Math.floor(-2.1));  //-3
console.log(Math.floor(-2.9));  //-3

(6)ceil(n),向上取整;往大的整数取。

console.log(Math.ceil(4.3));  //5
console.log(Math.ceil(4.7));  //5
console.log(Math.ceil(-2.1));  //-2
console.log(Math.ceil(-2.9));  //-2

(7)pow(x,y),x 的 y 次方;

(8)sqrt(n),n 的平方根;

(9)min(3,4,5,6),取指定数字中的最小值,所有主要浏览器都支持 min() 方法。

  • 不能接收数组;如果要检测数组,常用 Math.min.apply(null,[2,3,5])
  • 如果有某个参数为 NaN,或是不能转换成数字的非数字值,则返回 NaN

(10)max() 取最大值;同 min(),不能接收数组;

(11)sin(弧度)cos()tan() 三角函数,角度转弧度:Math.PI /180*角度

var num = Math.PI /180*90; //90度的角度转弧度
console.log( Math.sin(num) ); //1

2. Date() 日期对象

1月2月3月4月5月6月
JanuaryFebruaryMarchAprilMayJune
7月8月9月10月11月12月
JulyAugustSeptemberOctoberNovemberDecember

与数学对象不同的是,日期对象不能直接使用,需要用 new 来创建。
var d = new Date();
console.log(d); //Tue Oct 08 2019 14:00:33 GMT+0800 (中国标准时间)
打印出来的结果就是“标准时间格式”。

(1)获取时间的方法 - get系列
getFullYear(),获取年;
getMonth(),获取月,月是从 0 开始,0-11
getDate(),获取日;
getDay(),星期几,0-6,0 是星期天
getHours(),小时,24小时制;
getMinutes(),分;
getSeconds(),秒;
getMilliseconds,毫秒;
getTime(),获取时间戳,从1970.1.1 0:0:0 到此时此刻的毫秒数;

var d = new Date();
console.log(d);
console.log("年",d.getFullYear());
console.log("月",d.getMonth());
console.log("日",d.getDate());
console.log("星期",d.getDay());
console.log("时",d.getHours());
console.log("分",d.getMinutes());
console.log("秒",d.getSeconds());
console.log("毫秒",d.getMilliseconds());
console.log("时间戳",d.getTime()); 

在这里插入图片描述

(2)设置时间的方法 - set系列

  • 方法1:逐个设置
    setFullYear(2008),设置年份;设置2008年
    setMonth(3),设置月份,超过11会往前进一年;设置4月
    setDate(2),设置日;设置2日/号
    setHours(8),设置时;设置08时
    setMinutes(8),设置分;设置08分
    setSeconds(20),设置秒;设置20秒
    setMilliseconds(666),设置毫秒;
  • 方法二:设置时间戳
    setTime(时间戳),用设置时间戳的方式设置日期;时间戳与上面的时间同时设置,会产生冲突。
  • 方法三:构造函数的方式设置
    ① 一个参数:var d = new Date("2008.8.8 10:30:23");,未设置部分会归零。打印结果为:Fri Aug 08 2008 10:30:23 GMT+0800 (中国标准时间)
    ② 多个参数:var d = new Date(2008,8,8,10,30,23);,这里的月份d.getMonth()得到的是9月;打印结果为:Mon Sep 08 2008 10:30:23 GMT+0800 (中国标准时间)

(3)注意:

  • 秒 = 毫秒*1000;
  • 两个标准格式的日期(new 出来的日期对象)可以直接相减,得到的是毫秒数。这个毫秒数与他们两个日期的时间戳相减得到的值相等的。
    var d = new Date();
    console.log(d);     //Mon Mar 01 2021 16:41:47 GMT+0800 (中国标准时间)
    var old = new Date("1970.1.1 0:0:0");
    console.log(d - old);  //1614616907645
    console.log(d.getTime());  //1614616907645
    

(4)案例:计算出今天距离1937年12月13日10:01:00过去了多少天、小时、分钟?

var d = new Date();
console.log(d);  //Tue Mar 02 2021 15:44:24 GMT+0800 (中国标准时间)
var oldDate = new Date("1937.12.13 10:01:00");
var second = d.getTime() - oldDate.getTime();  //与var second=d-oldDate;得到的值相等
var times = second/1000/60/60/24;
var day = parseInt(times);
var h = parseInt( (times - day)*24 );
var minute = parseInt( ((times - day)*24 - h)*60 );
console.log(day +"天"+ h +"时"+ minute +"分"); //30395天5时43分


二、浏览器对象模型BOM

BOM(Browser Object Model)浏览器对象模型,抽象出一个对象,把浏览器的所有的信息和操作,都放在了这个对象中,这个对象就是 window
在这里插入图片描述
BOM 提供了独立于内容而与浏览器窗口进行交互的对象。

2.1 window的方法:

alert();prompt();confirm();setInterval()setTimeout()open()closed()…更多查看菜鸟教程。

1. alert();,弹出信息框;

在这里插入图片描述

2. prompt(); 弹出对话框;

输入的信息保存到返回值中。取消返回:null

var a = prompt("你好");
console.log(a);//点击确定返回: 输入框输入的值//点击取消返回: null

在这里插入图片描述

3. confirm();,弹出选择框;

返回 Boolean 值,点击确定:true,点击取消:false

var b = confirm("你好");
console.log(b);//点击确定: true   点击取消: false

在这里插入图片描述

4. 计时器:setInterval()

(1)参数1: callback,回调函数;参数2: 时间,毫秒数;

(2)使用:

setInterval(function(){
//操作
},1000)

(3)计时器(也包括延时器)的返回值是当前计时器的顺序(从 1 开始),且是唯一的

var t1 = setInterval(function(){console.log("I");
})
var t2 = setInterval(function(){console.log("love");
})
var t3 = setTimeout(function(){console.log("you");
})console.log(t1); //1
console.log(t2); //2
console.log(t3); //3

(4)清除计时器:clearInterval(计时器名称);
清除计时器时,清除的是计时器的返回值;

  • 通过一个事件开启一个计时器,建议在操作代码第一行清除该计时器,阻止用户多次操作时会多次调用该计时器。
    var time;
    time = setInterval(functiong(){clearInterval(time);
    //操作
    },1000);
    clearInterval(time);
    
5. 延时器: setTimeout()

(1)参数1: callback,函数;参数2: 时间,毫秒数;
(2)与计时器的区别:延时器只执行一次 callback 函数;
(3)清除延时器:clearTimeout(延时器名称);

6. open(url,name,feature,replace),打开一个新的浏览器窗口或查找一个已命名的窗口;

具体讲解及在线案例
(1)url: 可选,要在新窗口中显示的文档的url,如果没有指定URL,会打开一个新的空白窗口;
(2)name: 可选,指定 target 属性或声明新窗口的名称;

  • "_blank"默认,url 加载到一个新的窗口;
  • "_parent",url 加载到父框架;
  • "_self",url 替换当前页面;
  • "_top",url 替换任何可加载的框架集;
  • "自定义窗口名称",窗口名称;

(3)feature:可选,一个逗号分隔的项目列表;
(4)replace,通常省略。

window.open("http://www.runoob.com");
window.open('','','width=200,height=100');
7. close();,关闭浏览器窗口。;

所有主要浏览器(ie9及以上)都支持 close() 属性,该方法通常是用来关闭 open() 打开的浏览器。 具体案例
使用:window.close()


2.2 window的事件

1. onload;,会在页面或图像加载完成后立即发生;参考
  • (1)适用场景:该方法用于在网页加载完毕后立刻执行的操作,即当 HTML 文档加载完毕后,立刻执行某个方法。
  • (2) 通常用于 <body> 元素,在页面完全载入后(包括图片、css文件等等)执行脚本代码。
  • (3)使用原因:因为 JavaScript 中的函数方法需要在 HTML 文档渲染完成后才可以使用,如果没有渲染完成,此时的 DOM 树是不完整的,这样在调用一些 JavaScript 代码时就可能报出 "undefined" 错误。
2. onscroll;,滚动触发的事件
window.onscroll = function(){console.log(1);
}
3. onresize,改变页面大小时会触发

每次改变浏览器窗口的时候 onresize 事件都会触发两次时:

  • 解决方法:setTimeout()
    function windowResizeEvent(callback) {window.onresize = function() {var target = this;if (target.resizeFlag) {clearTimeout(target.resizeFlag);}target.resizeFlag = setTimeout(function() {callback();target.resizeFlag = null;}, 100);}
    }
    

2.3 window的子对象

history: 代表用户(在浏览器窗口中)访问过的 URL,即浏览器的历史记录;
location: 代表有关当前 URL 的信息,简单来说就是地址栏的信息;
navigator: 代表有关浏览器的信息:当前版本、内核、浏览器名字,浏览器的操作系统;

1. history 具体文档

在这里插入图片描述
(1)history.length;,返回历史记录的数量;
(2)history.back();,后退;
(3)history.forward();,前进;
(4)history.go(n);,后退(或前进)几步; n=0,刷新;n=负数,后退;n=正数,前进;

2. location 具体文档

在这里插入图片描述
在这里插入图片描述
(1)location 对象的一些主要属性:

  • location.hash: 锚点连接,地址栏上的地址 “#”及其后面的部分
    location.hash = "#6"
    
  • location.host:一个URL的主机名和端口;
  • location.href: 整个 url;
    //获取当前页面的url
    console.log(location.href);//跳转
    location.href = "https://www.baidu.com/";
    
  • location.pathname: URL路径名;
  • location.serach: 查询字段,’?’ 及其后面的部分;可以改变 url 中的查询字段;

(2)location 对象的方法:
location.assign(url);,载入一个新的文档;

  • 相当于跳转,可以使用浏览器上的后退,后退到载入新文档前的那个页面。

location.reload(): 强迫浏览器刷新当前页面,可以传参,参数默认为 false

  • false:从客户端缓存里取当前页再刷新; ture:绕过缓存,从服务器上重新下载该文档,相当于浏览器上的清空缓存刷新;
  • reload() 方法效果和 history.go(0) 相同,都是类似浏览器上的刷新按钮;

location.replace(url);,用一个新文档取代当前文档。具体文档及案例

  • 用新 url 的文档替换当前文档后,在历史记录中没有被取代的这条文档,它被新 url 的文档给替换掉了。
3. navigator 具体文档

在这里插入图片描述
(1)navigator.appName;,返回当前浏览器的名称;
(2)navigator.appVersion;,返回当前浏览器的版本号;
(3)navigator.platform;,返回当前计算机的操作系统;
(4)navigator.userAgent;,代替上面3个方法;

<script>console.log(navigator.appName);console.log(navigator.appVersion);console.log(navigator.platform);console.log(navigator.userAgent);
</script>

谷歌浏览器上的打印信息:
在这里插入图片描述



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362298.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ListView展示SIM信息

首先看一下程序运行后的图片&#xff1a; 在开始写代码之前&#xff0c;看展示下程序的结构&#xff1a; 下面开始代码, 第一步&#xff0c;主程序代码&#xff1a; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundl…

js笔记(五)文档对象模型DOM

大标题小节一、DOM选择器1. id 选择器&#xff1a;getElementById("id名")&#xff1b;2. class 选择器&#xff1a;getElementByClassName("class名")&#xff1b;3. 标签选择器&#xff1a;getElementsByTagName("标签名")&#xff1b;4. name…

Flot画实时曲线

源代码&#xff1a; <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> <title>深海的小鱼编制-PLOT</title> <script language"javascript" type"text/javascript" src"…

RHQ指标的WildFly子系统

对于RHQ-Metrics&#xff0c;我已经开始为WildFly 8编写一个子系统&#xff0c;该子系统能够在WildFly内收集指标&#xff0c;然后以固定的时间间隔&#xff08;当前为每分钟&#xff09;将其发送到RHQ-Metrics服务器。 下一张图是该发件人连续运行1.5天时结果的可视化效果的G…

Linux下实现客户端和服务器端的通信

首先&#xff0c;可以将代码复制下来放到U盘里&#xff0c;然后挂载到Linux上 挂载步骤 找到设备->USB->你U盘的名字 挂载成功 访问U盘把代码拷贝到home文件夹下&#xff0c;就可以直接进行编译。 client.c #include <stdio.h> #include <unistd.h>#include…

js笔记(八)ES6

大标题补充描述一、 ES6 中新增的声明方式&#xff1a;let、constvar、let、const之间的区别二、 ES6 字符串扩展1. 子串的识别&#xff1a;includes()、startsWith()、endsWith()&#xff1b;2. 重复字符串&#xff1a;repeat()&#xff1b;3. 字符串补全&#xff1a;padStart…

webpack css打包为一个css

1、安装 npm install extract-text-webpack-plugin --save-dev 2、项目目录&#xff1a; index文件夹下的index.css&#xff1a; body{background-color: #ccc;}.flex-div{display: flex;} index文件夹下的index2.css&#xff1a; p{text-indent: 2em;} index文件夹下的index-l…

javascript深入理解js闭包

闭包&#xff08;closure&#xff09;是Javascript语言的一个难点&#xff0c;也是它的特色&#xff0c;很多高级应用都要依靠闭包实现。 一、变量的作用域 要理解闭包&#xff0c;首先必须理解Javascript特殊的变量作用域。 变量的作用域无非就是两种&#xff1a;全局变量和局…

Codeforces Round #568 (Div. 2) G2. Playlist for Polycarp (hard version)

因为不会打公式&#xff0c;随意就先将就一下&#xff1f; #include<cstdio> #include<algorithm> #include<iostream> #include<cstring> #include<vector> using namespace std; typedef long long LL; const int N55; const int MOD1e97; int…

jQuery实现页面关键词高亮

示例代码&#xff0c;关键位置做了注释&#xff0c;请查看代码&#xff1a; <html><head><title>jQuery实现页面关键词高亮</title><style type"text/css">* {margin: 0;padding: 0;}p {padding: 10px;margin-bottom: 20px;}.highligh…

简而言之,JUnit:测试隔离

作为顾问&#xff0c;我仍然经常遇到程序员&#xff0c;他们对JUnit及其正确用法的理解最多。 这使我有了编写多部分教程的想法&#xff0c;从我的角度解释了要点。 尽管存在一些有关使用该工具进行测试的好书和文章&#xff0c;但是也许可以通过本动手实践的方法来使一两个额…

Apache Camel 2.14中的更多指标

Apache Camel 2.14将于本月晚些时候发布。 由于正在解决某些Apache基础结构问题&#xff0c;因此存在一些问题。 这篇博客文章讨论的是我们添加到此版本中的新功能之一。 感谢Lauri Kimmel捐赠了骆驼指标组件&#xff0c;我们将其与出色的Codehale指标库集成在一起。 因此&am…

移动端网页宽度值(未加meta viewport标签)

移动端网页宽度值&#xff08;未加meta viewport标签&#xff09;: iphone:980px Galaxy&#xff08;盖乐世&#xff09;&#xff1a;980px Nexus&#xff1a;980px blackberry&#xff08;黑莓&#xff09;&#xff1a;980px LG&#xff1a;980px Nokia&#xff1a;980p…

简而言之:JRunner

关于JUnit测试要点的多篇教程的第四章介绍了该工具可交换测试运行器体系结构的目的&#xff0c;并介绍了一些可用的实现。 正在进行的示例通过编写参数化测试的不同可能性扩大了主题。 由于我已经发布了JUnit Rules的介绍&#xff0c;因此我决定跳过关于该主题的已宣布部分。 …

cmake how to create vs file filters

cmake how to create vs file filters 用cmakelists构建出来的工程&#xff0c;没有文件filters&#xff0c;可采用如下方法解决 set(SOURCE_LIST"lotteryTicket.cpp""stdafx.cpp""stdafx.h""test/main.cpp" )add_executable(lotteryT…

Hibernate核心接口

一、Configuration类&#xff1a;1、 作用&#xff1a;&#xff08;1&#xff09;管理hibernate配置信息&#xff08;2&#xff09;读取hibernate.cfg.xml文件&#xff08;3&#xff09;加载hibernate的驱动&#xff0c;例如&#xff1a;url,用户名&#xff08;4&#xff09;管…

CSS实现垂直居中的方法

CSS实现垂直居中的方法 1、relative absolute定位&#xff1a; (1)css html代码 1 <!doctype html>2 <html lang"en">3 4 <head>5 <meta charset"UTF-8" />6 <title>Document</title>7 …

高并发系统之大忌-慢查询

最近又遇到了一次慢查把db&#xff08;mariadb10)几乎打挂的案例&#xff0c;作为一个核心支付系统的技术负责人&#xff0c;真是每日如履薄冰。因为之前支付系统经常出问题&#xff0c;现在各个BG对支付系统都盯得很紧。这次要不是我及时让DB给暴力清理数据&#xff0c;没准又…

Hadoop namenode启动瓶颈分析

转载&#xff1a;http://blog.csdn.net/AE86_FC/archive/2010/08/26/5842020.aspx NameNode启动过程详细剖析 NameNode中几个关键的数据结构 FSImage Namenode会将HDFS的文件和目录元数据存储在一个叫fsimage的二进制文件中&#xff0c;每次保存fsimage之后到下次保存之间的所有…

Java 9 –终极功能列表

这篇文章将针对即将到来的Java 9版本进行更新&#xff0c;新增功能 &#xff08; 最新更新&#xff1a;2014年 9月9日 &#xff09; OpenJDK开发正在加快速度&#xff1a;2014年3月Java 8发布之后&#xff0c;我们预计将进入2年的发布周期。 据报道&#xff0c;Java 9将于2016…