JavaScript对象(一)

对象

1.内置对象

1.1 基本包装类型

在ES中,数据分类基本分为基本数据类型和引用类型

而基本包装类型,严格来说不属于这两类,但又和他们息息相关

基本数据类型和引用类型的其中一个明显区别是:引用数据类型有内置方法或者可以自定义方法来操作数据。但大部分基本数据类型没有。

而根据最新ES标准定义,基本数据类型包括Undefined, Null, Boolean, Number, Symbol, String。

为了便于操作基本数据类型值,CMAScript提供了3个特殊引用数据(即基本包装类型):Boolean、Number、String

基本包装类型,和其他引用类型一样,拥有内置的方法可以对数据进行额外操作。

当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型对象,从而可以调用一些方法操作这些数据

例如:

var str = 'test';
//substring(start,end),截取从start到end的字符串,不包括end。
var str2 = str.substring(2);
console.log(str2); //st

在上面的例子中,str是string类型,属于基本数据类型,但是却调用了对象的方法。

这是因为在执行第二行代码的时候,后台会自动进行一些操作

  1. 自动创建String类型的一个实例,该实例为基本包装类型的对象
  2. 再调用实例方法
  3. 最后销毁这个实例(即该实例只在调用方法的时候存在,调用结束则会被销毁,可以理解为这个实例只作用于这一行代码)

同样的,Boolean、Number类型的数据调用相应方法时后台也会进行这些操作。

此时,你是不是在疑惑,那什么时候JS会自动创建基本包装类型的对象呢?

当需要读取到基本数据类型的值时,即需要从内存中获取到值(这个过程称为读取模式),就会自动创建基本包装类型的对象。

var str='test';
console.log(str);  //读取模式
var str1=str;  //读取模式

引用类型和基本包装类型的区别

主要区别在于对象的生存期

  • 引用类型:使用new操作符创建的引用类型实例,在执行流离开当前作用域之前一直都保存在内存中
  • 基本包装类型:只存在一行代码的执行瞬间,然后立即销毁
var str='test';
str.name='zs';
console.log(str.name);  //undefined

上述例子给str自动创建了String对象实例,给该对象实例添加了name属性,在第二行代码中,我们确实给这个实例成功添加了name属性,但是它只存在于这一行代码中,当我们执行第三行代码时,又创建了一个新的实例,而之前的实例已经被销毁了,因此也就没有了name属性,所以打印出来的值就是undefined。

给基本数据类型添加方法或属性

  1. 增加对应的包装对象的原型方法

    /给字符串添加属性或方法  要写到对应的包装对象的原型下才行
    var str = 'hello';
    String.prototype.last = function(){
      // 返回指定位置的字符
      return this.charAt(this.length - 1);
    };
    console.log(str.last());//o
    
  2. 使用new运算符创建String对象

    不建议使用该方法,否则会分不清是基本数据类型还是引用类型的数据

var str = new String('hello');
// 有效属性
str.name = 'HI';
// 有效方法
str.age = function () {
    return 100;
}
console.log(str);//[String: 'hello'] { name: 'HI', age: [Function (anonymous)] }
console.log(str.name);  // HI
console.log(str.age()); // 100
1.1.1 Boolean类型

Boolean 类型没有特定的属性或者方法。一般直接将Boolean当做一个工具方法来使用

1.1.2 Number类型
  • 内置属性(静态属性,直接调用即可)
属性描述
MAX_VALUE可表示的最大的数。
MIN_VALUE可表示的最小的数。
NaN非数字值。
NEGATIVE_INFINITY负无穷大,溢出时返回该值。
POSITIVE_INFINITY正无穷大,溢出时返回该值。
prototype使您有能力向对象添加属性和方法。
  • 内置方法(对象方法)
方法描述
toString把数字转换为字符串,使用指定的基数。
toLocaleString把数字转换为字符串,使用本地数字格式顺序。
toFixed把数字转换为字符串,结果的小数点后有指定位数的数字。
toExponential把对象的值转换为指数计数法。
toPrecision方法可在对象的值超出指定位数时将其转换为指数计数法。
valueOf返回一个 Number 对象的基本数字值。
1.1.3 String类型
  • 对象属性
属性描述
constructor对创建该对象的函数的引用
length字符串的长度
prototype允许您向对象添加属性和方法

String 也包含对象的通用方法,比如 valueOf()、toLocaleString()和 toString()方法,但这些方法都返回字符串的基本值。

  • 字符方法
方法描述
charAt(index)返回指定索引位置的字符
charCodeAt(index)以Unicode编码形式返回指定索引位置的字符
  • 字符串操作方法
方法描述
concat()连接字符串。
slice(start,end)返回start到end(不包括end)之间位置的字符串,start和end可以为负数
substring(start,end)返回start到end(不包括end)之间位置的字符串,start和end不可以为负数,没有end的话,提取剩余全部
substr(start,length)返回start(可以为负数)开始的length个字符串
  • 字符串位置方法
方法描述
indexOf(str,n)从n开始搜索第一个str,并将搜索的索引值返回,无n从首字符开始检索,未找到返回-1
lastIndexOf(str,n)从n开始搜索的最后一个str,并将搜索的索引值返回,无n从首字符开始检索,未找到返回-1
  • 大小写转换方法
方法描述
toLowerCase()把字符串转换为小写。
toUpperCase()把字符串转换为大写。
toLocaleLowerCase()把字符串转换为小写。本地化
toLocaleUpperCase()把字符串转换为大写。本地化
  • 字符串的模式匹配方法
方法描述
match()找到一个或多个正则表达式的匹配。
replace()替换与正则表达式匹配的子串。
search()检索与正则表达式相匹配的值。
split()把字符串分割为字符串数组。
1.2 Math对象

Math对象用于实现数学任务

1.2.1 对象属性
属性描述
E返回算术常量 e,即自然对数的底数(约等于2.718)。
LN2返回 2 的自然对数(约等于0.693)。
LN10返回 10 的自然对数(约等于2.302)。
LOG2E返回以 2 为底的 e 的对数(约等于 1.414)。
LOG10E返回以 10 为底的 e 的对数(约等于0.434)。
PI返回圆周率(约等于3.14159)。
SQRT1_2返回返回 2 的平方根的倒数(约等于 0.707)。
SQRT2返回 2 的平方根(约等于 1.414)。
1.2.2 对象方法

Math的方法很多,下面为常用的

比较方法

Math.min():一组数中的最小值

Math.max() :求一组数中的最大值

将小数值舍入为整数的几个方法

Math.ceil():向上舍入

Math.floor():向下舍入

Math.round() :四舍五入

随机数

Math.random():返回大于0小于1的一个随机数 [0,1)

1.3 Date对象

Date 对象用于处理日期和时间,是JS提供的内置构造函数,会自动把当前日期和时间保存为其初始值

创建Date对象的语法:

var myDate = new Date();
console.log(myDate); //2021-09-14T07:24:07.901Z
//在node环境和浏览器环境输出不同

Date对象可传入参数,获取到你传入参数的时间

var time = new Date('2021-01-01 16:06:06')
console.log(time) 
// node环境下  2021-01-01T08:06:06.000Z
// 浏览器环境下 Fri Jan 01 2021 16:06:06 GMT+0800 (中国标准时间)

//传入多个参数  月份取值从0-11 
var time = new Date(2021, 01, 1, 16, 06, 06);
console.log(time);//2021-02-01T08:06:06.000Z
1.3.1 常用对象方法

toString():转化为字符串形式

toLocaleString():转化为 本地化字符串

getFullYear():得到指定字符串中的哪一年

getMonth() :得到指定字符串中的哪一个月份,月份取值为0-11,即0表示1月,1表示2月

getDate():得到指定字符串中的哪一天

getHours() :得到指定字符串中的哪小时

getMinutes() :得到指定字符串中的哪分钟

getSeconds() :得到指定字符串中的哪秒钟

getDay() :得到指定字符串当前日期是一周中的第几天(周日是 0,周六是 6)

getTime() :得到执行时间到 格林威治时间 的毫秒数 时间戳

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值