对象

一.  对象基础介绍

创建对象:

要创建对象,只需要输入一对大括号即可。这样就可以创建一个空的对象。

let objName = {};

可以给对象添加相应的属性

let xiejie = {};

xiejie.name = "xiejie";

xiejie.age = 18;

xiejie.gender = "male";

xiejie.score = 100;

 

let xiejie = {

    name : "xiejie",

    age : 18,

    gender : "male",

    score : 100

};

 

访问对象属性

  1. 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

  1. 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

 

let xiejie = {

    name : "xiejie",

    age : 18,

    gender : "male",

    score : 100

};

let str = "name";

console.log(xiejie[str]);//xiejie

 

伪数组对象原理

let obj = {

    1 : "Bill",

    2 : "Lucy",

    3 : "David"

}

console.log(obj[1]);//Bill

console.log(obj[2]);//Lucy

console.log(obj[3]);//David

symbol访问法

用于解决属性名冲突

let sym = Symbol(描述信息);

 

let name = Symbol("这是一个名字");

console.log(name);//Symbol(这是一个名字)

console.log(typeof name);//symbol             

 

let person = {

    name : "xiejie"

}

let name = Symbol("??????");

person[name] = "yajing";

console.log(person.name);//xiejie

console.log(person[name]);//yajing

 

Symbol.for()方法用来创建一个共享的symbol

let obj = {};

let name = Symbol.for("test");

  • obj[name] = "xiejie";

let name2 = Symbol.for("test");

console.log(obj[name2]);//xiejie

Symbol.keyFor()方法来查找一个symbol的键是什么

let obj = {};

let name1 = Symbol("test1");

let name2 = Symbol.for("test2");

let i = Symbol.keyFor(name1);

let j = Symbol.keyFor(name2);

console.log(i);//udnefined

console.log(j);//test2

删除对象属性

对象的任何属性都可以通过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();//报错

 

对象常用属性和方法

  1. 1.     in操作符

判断一个对象中是否含有某个属性,如果有返回true,没有返回false

let person = {

    name : "xiejie",

    age : 18,

    walk : function(){

        console.log("I'm walking");

    }

}

let gender = Symbol("person's gender");

person[gender] = "male";

console.log("name" in person);//true

console.log("age" in person);//true

console.log([gender] in person);//报错

注意in无法判断对象的symbol属性的包含情况,会直接报错

 

  1. 2.     for…in

使用for…in来取出数组的键

let person = {

    name : "xiejie",

    age : 18,

    walk : function(){

        console.log("I'm walking");

    }

}

for(let i in person){

    console.log(i);

}

// name

// age

// walk

注意:for…in无法遍历出用symbol来定义的属性

 

Object.getOwnPropertySymbols()用来返回一个对象所有的symbol属性

let person = {

    name : "xiejie",

    age : 18,

    walk : function(){

        console.log("I'm walking");

    }

}

let gender = Symbol("person's gender");

person[gender] = "male";

console.log(Object.getOwnPropertySymbols(person));

//[ Symbol(person's gender) ]

 

Object.key():用于找出可迭代对象的键             

 

let person = {

    name : "xiejie",

    age : 18,

    walk : function(){

        console.log("I'm walking");

    }

}

let gender = Symbol("person's gender");

person[gender] = "male";

for(let i of Object.keys(person)){

    console.log(i);

}

// name

// age

// walk

 

Object.values():用于找出可迭代对象的值

let person = {

    name : "xiejie",

    age : 18,

    walk : function(){

        console.log("I'm walking");

    }

}

let gender = Symbol("person's gender");

person[gender] = "male";

for(let i of Object.values(person)){

    console.log(i);

}

// xiejie

// 18

// [Function: walk]

 

Object.entries():用于找出可迭代对象的键和值

let person = {

    name : "xiejie",

    age : 18,

    walk : function(){

        console.log("I'm walking");

    }

}

let gender = Symbol("person's gender");

person[gender] = "male";

for(let i of Object.entries(person)){

    console.log(i);

}

// [ 'name', 'xiejie' ]

// [ 'age', 18 ]

// [ 'walk', [Function: walk] ]

 

1-5嵌套对象

一个对象里面可以包含其他的对象

let family = {

    xiejie : {

        age : 18,

        gender : "male"

    },

    song : {

        age : 20,

        gender : "female"

    }

};

 

对象的解构

let a = {name:"xiejie",age:18};

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

 

this关键字: 代表当前对象

let person = {

    name : 'xiejie',

    age : 18,

    intro : function(){

        console.log(this);

        // { name: 'xiejie', age: 18, intro: [Function: intro] }

        console.log(`My name is ${this.name},I'm ${this.age} years old`);

        // My name is xiejie,I'm 18 years old

    }

}

person.intro();

 

3.    字符串相关方法

3-1.字符串属性: length属性:可以访问到该字符串里面有多少个字符

console.log("Hello".length);//5

 

3-2.字符串方法

访问特定字符

charAt():接收一个数字参数,找到对应该下标的字符是什么

let str = "Hello World";

console.log(str.charAt(1));//e

console.log(str.charAt('a'));//H

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

let str = "Hello World";

console.log(str.charCodeAt(1));//101

console.log(str.charCodeAt('a'));//72

 

字符串操作方法

contact():用于将一个或者多个字符串拼接起来,返回拼接得到的新字符串

let str = "Hello";

let newStr = str.concat(" World!!!");

console.log(str);//Hello

console.log(newStr);//Hello World!!!

 

substr():截取字符串,第一个数是起始位置,第二个是表示截取多少个

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(str1);//llo W

console.log(str2);//llo Wor

 

slice():接收一或两个参数,截取字符串

let str = "Hello World";

let str2 = str.slice(2);

let str3 = str.slice(2,7);//???7

console.log(str);//Hello World

console.log(str2);//llo World

console.log(str3);//llo W

 

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

 

slice()substr()substring()的区别:

slice 将所有负值和字符串的长度相加

substr 负的第一个参数和字符串长度相加负的第二个参数转化为0

substring 把所有负值转化为0 substring()会将比较小的数作为开始,比较大的数作为结束

indexOf()lastIndexOf():一个从开头一个从结尾开始找到第一个相同的字符,返回字符串的位置

let str = "Hello World";

console.log(str.indexOf('l'));//2

console.log(str.lastIndexOf('l'));//9

 

4.    JSON

JSON英语全称JavaScript Object Notation

JSON,属性名必须用双引号包含起来

let batman = {

    "name" : "Batman",

    "real name" : "Bruce Wayne",

    "height" : 74,

    "weight" : 210,

    "hero" : true,

    "villain" : false,

    "allies" : ["Robin","Batgirl","Superman"]

}

JSON对象转为字符串

JSON.stringify()let person = {

    "name" : "xiejie",

    "age" : 18,

    "gender" : "male",

}

let str = JSON.stringify(person);

console.log(str);

 

JSON.stringify()

let person = {

    name : "xiejie",

    age : 18,

    walk : function(){

        console.log("I'm walking");

    }

}

let str = JSON.stringify(person);

console.log(str);//{"name":"xiejie","age":18}

 

字符串转为JSON对象

使用JSON.parse()方法

let person = '{"name":"xiejie","age":18,"gender":"male"}';

let obj = JSON.parse(person);

console.log(obj);

//{ name: 'xiejie', age: 18, gender: 'male' }

 

6-4 Math对象

Math对象常见的方法

  1. 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

  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

 

随机数方法:

Math.random()方法返回0-1之间的随机数。

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

 

6-5.Date 对象

获取时间戳

 

let now = Date.now();

console.log(now);//1511767644238

 

Date.parse()

console.log(Date.parse("1990/03/23"));//638121600000

console.log(Date.parse("March 23,1990"));//638121600000

console.log(Date.parse("2017"));//1483228800000

console.log(Date.parse("Hello"));//NaN

posted on 2019-07-21 22:58  boring333  阅读(237)  评论(0编辑  收藏  举报

导航