本章内容
- 理解对象
- 基本JavaScript数据类型
- 原始值和原始值包装类型
Date
概述:Date类型将日期保存为协调世界时间1970年1月1日午夜至今经过的毫秒数,使用这种存储格式Date类型可以精确表示1971年1月1日往后的多年 创建Date类型对象------使用new操作符可以调用Date构造函数,代码分析如下:
let date=new Date()
console.log(date)
注意:基于其他的日期时间创建它,必须传入其毫秒数 支持的的日期格式
- “月/日/年”,如:13/9/2021
- ”月名,日,年“:May,13,2021
- “周几 月名 日年时:分:秒时区”,如:Mon Sep 13 2021 22:34:08 GMT+0800
- 例子代码分析如下:
let date=new Date(Date.parse("May 23,2021"))
let date=new Date(Date.parse())
console.log(date)
Date基本方法
- Date().parse–接收一个表示日期的字符串参数
- Date().UTC–返回日期的毫秒表示,传给它的参数是年 零起点的月数,日,时,分,秒,毫秒。(只有前两个是必须的)
- Date.Now()—表示返回方法执行日期和时间的毫秒数(代码分析如下)
let start=Date.now();
for(let i=0;i<10;i++)
{
console.log(i)
}
let stop=Date.now()
result=stop-start
console.log(result)
- toLocaleString()----返回和浏览器运行本地环境一致的日期和时间
let date=new Date();
console.log(date.toLocaleDateString())
- toString()----返回带时区信息的日期和时间,而时间用24小时制表示
let date=new Date();
console.log(date.toString())
- valueOf()----不返回字符串,返回的是日期的毫秒表示,操作符可以直接使用它返回值
let date1=new Date(2021,9,13);
let date2=new Date(2021,9,14);
console.log(date1>date2);
console.log(date1<date2);
Date日期格式化方法
- toDateString()—显示日期中的周几 月 日 年(格式特定于实现)
let date1=new Date();
console.log(date1.toDateString());
- toTimeString()----显示日期的时 分 秒和时区(格式特定于实现)
let date1=new Date();
console.log(date1.toTimeString());
- toLocaleDateString()—显示日期中的周几 月 日 年(格式特定于实现和地区)
let date1=new Date();
console.log(date1.toLocaleDateString());
- toLocaleTimeString()—显示日期的时 分 秒和时区(格式特定于实现和地区)
let date1=new Date();
console.log(date1.toLocaleTimeString());
- toUTCString()—显示完整的UTC日期(格式特定于实现)
let date1=new Date();
console.log(date1.toUTCString());
日期/时间组件方法(使用方式和上面方法一样,下面方法只作简略陈述)
- getTime()----返回日期的毫秒表示,与valueOf()效果一样
- setTime()----设置日期的毫秒表示,从而修改整个时间
- getFullYear()—返回4位数年
- getUTCFullYear()—返回UTC4位数年
- setFullYear()—设置4位数年
- setUTCFullYear()—设置UTC4位数年
- getMonth()—返回日期的月(0表示1月,11表示12月)
- getUTCMonth()----返回UTC日期的月(0表示1月,11表示12月)
- setMonth(month)—设置日期的月(month为大于0的数值,大于11加年)
10.setUTCMonth(month)—设置UTC日期的月(month为大于0的数值,大于11加年) 11.getDate()—返回日期中的日(1~31) 12.getUTCDate()-- 返回UTC日期中的日(1~31) 13.setDate(date)—设置日期中的天数(date大于当月天数,则加月) 14.时/分/秒等获取和设置方法和上面的类似,在这里就不一一列举了
原始值包装类型
概述为了方便操作原始值,ECMAScript提供了3种特殊的引用类型:Boolean,Nunber,String.他们具有其他引用类型的一样的特点,同时也具有与各自原始类型对应的特殊行为 注意:1.当用到某个原始值的方法或属性时,后台都会创建一个相应的原始包装类型的对象,从而暴露出操作原始值的各种方法 2.在以读模式访问字符串值的任何时候,后台都会执行以下3步
- 创建一个string类型的实例(类型也可以是Number boolean)
- 调用实例上的特定方法
- 销毁实例
- 代码分析如下(以string为例)
let s1=new String("some txt");
let s2=s1.substring(2);
s1=null
**引用类型和原始包装类型的主要区别:**在于对象的生命周期,在通过new实例化引用类型后,得到的实例会在离开作用域时被销毁,而自动创建的原始值包对象只存在于访问它的那行代码执行期间,所以不能在运行时给原始值添加属性和方法。代码分析如下:
let s1="some text";
s1.color="red";
console.log(s1.color);
注意:使用new调用原始值包装类型的构造函数,与调用同名的转型函数并不一样,代码分析如下:
let value="25";
let number=Number(value);
console.log(typeof number);
let obj=new Number(value);
console.log(typeof obj);
Boolean *概述:*Boolean对应布尔值的引用类型,创建一个Boolean对象,就使用Boolean对应的构造函数,并传参true或false 创建构造函数:
let booleanObject=new Boolean(true);
注意:Boolean实例会被重写valueOf()方法,返回一个原始值true或false,tostring方法被调用时也会被覆盖,返回一个true或false 原始值和引用值的区别(Boolean对象):
- typeof操作符原始值返回“Boolean”,但引用值返回“object”
- Boolean对象是Boolean类型的实例,在使用instanceof操作符返回true,但对原始值返回false
- 理解原始布尔值和Boolean对象之间的区别非常重要,强烈建议永远不要使用后者
- 代码分析如下:
let falseObject=new Boolean(false);
let falseValue=false;
console.log(typeof falseObject);
console.log(typeof falseValue);
console.log(falseObject instanceof Boolean);
console.log(falseValue instanceof Boolean);
Number 概述:Number是对应数值的引用类型,创建一个Number对象,就使用Number对应的构造函数,并传入一个数值 创建:let numberObject=new Number(12); 注意:Number类型重写valueOf() toLocalString()和toString()方法 Number方法:
- valueOf()—返回该对象表示的原始数值
- toLocalString()和toString()–返回数值字符串,注意toString可以接收一个表示基数的参数,并返回相应基数形式的数值字符串
let num=10;
console.log(num.toString());
console.log(num.toString(2));
console.log(num.toString(8));
console.log(num.toString(10));
console.log(num.toString(16));
- toFixed()—返回包含指定小数点位数的数值的字符串
let num=10;
console.log(num.toFixed(2));'10.00'
let num=10.006;
console.log(num.toFixed(2));'10.01'
4.isInteger()方法与安全整数----用于辨别一个数值是否保存为整数,有时候小位数的0可能会让人误以为数值是一个浮点值
conlose.log(Number.isInteger(1));
conlose.log(Number.isInteger(1.0));
conlose.log(Number.isInteger(1.02));
注意:处理原始数值和引用数值是typeof和instanceof会返回不一样的结果,代码如下:
let numberIbject=new Number(10);
let numberValue=10;
console.log(typeof numberObject)
consloe.og(typeof numberValue)
console.log(numberObject instanceof Number)
console.log(numberValue instanceof Number)
String 概述:String是对应字符串的引用类型,要创建一个String对象,使用String构造函数并传入一个数值,如下例:
let stringObject=new String("hello world")
方法:
- 每一个String对象都有一个length属性,表示字符串中字符的数量
- charAt()方法返回给定索引位置的字符
- charCodeAt()-------可以查看指定码元的字符编码
- 字符串操作方法
1.concat()—用于将一个或多个字符串拼接成一个新的字符串
let stringValue="hello";
let result=stringValue.concat("world");
console.log(result);
console.log(stringValue);
2.slice();substr();substring()—从字符串中提取子字符串的方法,第一个参数表示字符串开始的位置,第二参数表示子字符串结束的位置;但是substr()的第二参数表示返回的子字符串的数量
let stringValue="hello world";
console.log(stringValue.slice(3));
console.log(stringValue.substr(3);
console.log(stringValue.substring(3);
console.log(stringValue.substring(3,7);
console.log(stringValue.slice(3,7);
console.log(stringValue.substr(3,7);
注意:当某个参数是负值时,这3个方法的行为又有不同
- slice—将所有负值的参数都当成字符串长度加上负参数值
- substr—将第一个负参数值当成字符串长度加上该值,将第二个负参数值转换为0
- substring—将所有负参数值都转换为0
let stringvalue="hello world";
console.log(stringValue.slice(-3));
console.log(stringValue.substring(-3));
console.log(stringValue.substr(-3));
console.log(stringValue.slice(3,-4));
console.log(stringValue.substring(3,-4));
console.log(stringValue.substr(3,-4));
- 字符串位置方法-----indexOf()和lastIndexOf()—从字符串中搜索传入的字符串
- 字符串包含方法:endsWith(),startsWith(),includes()—从字符串中搜索传入的字符串,并返回一个表示是否包含的布尔值
- trim()-----去掉所有空格符
- repeat()-----表示要将字符串复制多少次
|