对象

## 对象
**创建对象**
  只需要一对大括号即可。创建一个空的对象,可以给该对象添加相应的属性,属性与属性之间时以逗号隔开的,这里我们可以将属性名称之位键,属性对应的称之为值,对象是由一个一个键值对组成的。
**访问对象属性**
  有3种方法:点访问法,中括号访问法,symbol访问法
  1·点访问法:
示例:

let xiejie = { 
    name : "xiejie",
    age : 18, 
    gender : "male", 
    score : 100 
};
console.log(xiejie.name);//xiejie 
console.log(xiejie.age);//18 
console.log(xiejie.gender);//male 
console.log(xiejie.score);//100

 

2·中括号访问法:
示例:

let xiejie = { 
  name : "xiejie", 
  age : 18, 
  gender : "male", 
  score : 100 
}; 
console.log(xiejie["name"]);//xiejie 
console.log(xiejie["age"]);//18 
console.log(xiejie["gender"]);//male 
console.log(xiejie["score"]);//100

 

  当我们的属性名来自于变量时,用中括号访问法。
3·symbol访问法:
  ES6新增的数据类型,解决同名属性名冲突的问题。
**删除对象属性**
  对象的任何属性都可以通过delete运算符来从对象删除
示例:

let person = { 
  name : "xiejie", 
  age : 18, 
  walk : function(){ 
  console.log("I'm walking"); 
  } 
} 
console.log(person.age);//18
  delete person.age;//删除 age 这个属性
console.log(person.age);//undefined 
  person.walk();//I'm walking 
  delete person.walk;// 删除walk 方法
  person.walk();// 报错
//TypeError: person.walk is not a function

 

  如果删除的时属性,那么再次访问值变为undefined,而如果删除的时方法,那么调用时会直接报错。
**对象常用属性和方法**
  1·in操作符:
    该操作符用于判断一个对象是否有某一个属性,如果有返回true,没有返回false。
  2·for...in
    数组中使用for in来取出数组的键。这里循环遍历一个对象的所有属性。
  3·keys(),values(),entries()
    分别用于找出可迭代对象的键,值,以及键和值
**嵌套对象**
  一个对象里面可以包含其他的对象,访问嵌套对象里面的值的时候,和访问单个对象的方式一样。
**对象的解构**
示例:

let a = {name:"xiejie",age:18}; l
 let b = {name:"song",age:20}; 
let {name:aName,age:aAge} = a; 
let {name:bName,age:bAge} = b; 
console.log(aName);//xiejie 
console.log(aAge);//18 
console.log(bName);//song
console.log(bAge);//20
当属性名和变量名一致时,可以简写:
示例:
let a = {name:"xiejie",age:18}; 
let {name,age} = a; 
console.log(name);//xiejie
console.log(age);//18

 

**对象作为函数参数**
  对象字面量作为函数的参数进行传递,可以再调用函数时不用记住参数的顺序。
**this关键字**
  代表的是当前的对象,
**命名空间**
  相同的变量和函数名被共享再同一作用域的时候,就会发生命名冲突,解决命名冲突的方式,就是使用对象字面量来为一组相关函数创建一个命名空间,这样咋调用这些函数的时候需要写上对象名,这里的对象名就充当了命名空间的角色。
## 字符串相关方法
**字符串属性**
  length属性:可以访问到该字符串里面有多少个字符
**字符串方法**
  访问特定字符:
    charAt():接收一个数字参数,找到对应下标的字符是什么。
示例:

let str = "Hello World"; 
console.log(str.charAt(1));//e 
console.log(str.charAt('a'));//H 因为a被转为了数字0

 

  charCodeAt():接收一个数字参数,找到对应下标的字符编码是什么。
示例:

let str = "Hello World";
console.log(str.charCodeAt(1));//101 
console.log(str.charCodeAt('a'));//72

 

  from Char Code():这个方法基本上是和charCodeAt()执行相反的操作
示例:

console.log(String.fromCharCode(104,101,108,108,111));//hello

**字符串操作方法**
  concat():用于将一个或者多个字符串拼接起来,返回拼接得到的新字符串,注意的是原字符串不会产生改变。,拼接后的字符串可以返回值的方式返回。

  slice():和数组的slice()方法相似,接收一或两个参数,截取字符串,

  substr():再字符串中抽取从开始下标开始的指定数目的字符,效果和slice()方法一样,但是区别在于第二个参数
示例:

let str = "Hello World";
let str1 = str.slice(2); 
let str2 = str.substr(2); 
console.log(str1);//llo World 
console.log(str2);//llo World
str1 = str.slice(2,7);// 结束位置为7,不包含7
str2 = str.substr(2,7);// 要返回的字符个数
console.log(str2);//llo Wor

 

substring():用于提取字符串中介于两个指定下标之间的字符。
示例:

let str = "Hello World"; 
let str1 = str.slice(2);
let str2 = str.substr(2);
let str3 = str.substring(2);
console.log(str1);//llo World
console.log(str2);//llo World 
console.log(str3);//llo World
str1 = str.slice(2,7);// 结束位置为7,不包含7
str2 = str.substr(2,7);// 要返回的字符个数
str3 = str.substring(2,7);// 结束位置为7,不包含7
console.log(str1);//llo W 
console.log(str2);//llo Wor 
console.log(str3);//llo W

 

substring()和slice()方法的区别:
  slice():是将所有的负值和字符串的长度相加
  substr():负的第一个参数和字符串长度相加,负的第二个参数转换为0
  substring():把所有的负值转换为0,substring()会将较小的数作为开始,较大的数作为结束

**字符串位置方法**
  indexOf()和astlndexOf():这两个都是从一个字符串中搜索给定的子字符串,然后返回子字符串的位置,没有找到就是返回-1,区别在于一个从前面开始找,一个从后面开始找。
**查看是否包含字符**
  includes():如果包含返回true,否则返回false
**检测开始字符和结束字符**
  startsWith()和endsWith():返回true 不是返回false
**去除字符空白方法**
  trim():去除字符串两端空白的方式,
  trimLeft():删除字符串开头空格。
  trimRight():删除字符串末尾的空格。
**重复字符串**
  repeat():里面传入要重复的次数即可。
示例:

let str = "Hello"; 
console.log(str.repeat(3));
//HelloHelloHello

**字符串大小写转换方法**
  toLowerCase()和toLocaleLowerCase()还有toUpperCase()和toLocaleUpperCase()

  用的较多的是:toLowerCase()和toUpperCase()
## JSON
  是2001年发明的一种轻量级数据存储格式,被很多服务用于数据序列化以及配置,经常用于Web服务之间交换信息,
**JSON**
  - 属性名必须双引号引起来
  - 允许的值包括数字,true,false,null,数组,对象以及双引号引起来的字符串
  - 函数时不允许的
**JSON对象转为字符串**
  使用方法为:JSON.stringify()
    如果一个字面量对象里面包含了方法,那么在使用JSON.stringify()方法将其转为字符串时,会直接忽略掉对象里面的方法。
**字符串转为JSON对象**
  使用方法为:JSON.parse()
    当要将一个字符串转为JSON对象时,必须保证字符串的格式和JSON的格式一模一样,否则无法进行转换。
**Math对象**
**Math对象的常见属性**

| 属性                 | 说明 | 
| Math.E             | 自然数的底数,即常量e的值 | 
| Math.LN10        | 10的自然对数 |
| Math.LN2         | 2的自然对数 | 
| Math.LOG2E     | 以2为底的对数 | 
| Math.LOG10E    | 以10为底e的对象 | 
| Math.PI            | 数学里面PI的值 |
| Math.SQRT1_2  | 1/2的平方根()即2的平方根的倒数 |
| Math.SQRT2     | 2的平方根 |
                                    

 

  这里用的稍微多一点的就是PI,直接拿出来用即可。
**Math对象常见的方法**
  1·min()和max():求一组数值的最大值和最小值
示例:

let max = Math.max(3,5,8,1); 
let min = Math.min(3,5,8,1); 
console.log(max);//8 
console.log(min);//1

 

2·舍入方法ceil(),floor()和round()
  ceil():执行向上舍入
  floor():执行向下舍入
  round():四舍五入
示例:

let num = 3.14; 
console.log(Math.ceil(num));//4 
console.log(Math.floor(num));//3 
console.log(Math.round(num));//3

3·随机数方法
  Math.random()方法返回0-1之间的随机数,
    公式:值 = Math.floor(Math.random()*可能的值的总数+第一个可能的值)
示例:

let num = Math.random(); 
console.log(num);//0.24003779065523112 
// 生成25-50 之间的随机数
// 可能指的计算:50-25+1 

let rand = Math.floor(Math.random()*26 + 25);
console.log(rand);//41

封装一个函数,这个函数接收两个参数,然后可以返回这两个参数之间的随机数
示例:

let rand = function(x,y){ 
        let choice = y - x + 1; 
        return Math.floor(Math.random() * choice + x);
    } 
console.log(rand(1,10));//3    

**Date对象**
**时间戳**
就是从1970年1月1日0分0秒到现在为止的秒数。
获取时间戳:是精确的了毫秒,秒数需要毫秒除以1000

let now = Date.now(); 
now = Math.round(now / 1000);
console.log(now);

静态方法

Date.now()

Date.parse():

  注意:浏览器不支持不表示日期只表示时间的字符串格式

  注意:在ECMAScript5中,如果使用标准的日期时间字符串格式规则的字符串中,数学前有 前置0,则会解析为UTC时间,时间没有前置0,则会解析为本地时间。其他情况一般都会解 析为本地时间

 

Date.UTC():

  Date.UTCO同样返回给定日期的毫秒数,但其参数并不是一个字符串,而是分别代表年、月、日、时、分、秒、毫秒的数字参数,

  注意:该方法使用的是UTC时间,而不是本地时间

日期对象构造函数

不使用new关键字

示例:

  

如果不使用new关键字,那么就只是单纯的函数调用。会返回一个当前的日期和时间的字符串表 示。并且被当作函数调用时,会忽略所有传递进去的参数,如下:
console.log(Date());
//Mon Nov 27 2017 16:03:33 GMT+0800 (CST) console.log(Date("1990-03-23")); 
//Mon Nov 27 2017 16:03:33 GMT+0800 (CST)

使用new关键字

  如果使用new关键字,那么这个时候就会返回一个对象。

  1、使用n ew关键字但是没有传入任何参数

    会根据当前的日期时间来创建一个date对象

  2、传入数字参数

    则该参数表示与1970年1月1日0时0分0秒之间的毫秒数

  3、接收多个数字参数

    类似于Date.UTCO这个方法,不过返回的是一个对 象,而不是毫秒数。

  4、传入的是字符串参数

    返回该日期对象。如果字符串不能被解析为日期,则返回I nvalidDate

 

posted @ 2019-07-14 18:33  沐子李  阅读(197)  评论(0编辑  收藏  举报