zoukankan      html  css  js  c++  java
  • 对象

    一.  对象基础介绍

    创建对象:

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

    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

  • 相关阅读:
    访问系统内容提供器,获取联系人列表
    ubuntu下查看IP Gateway DNS信息
    使用fragment,Pad手机共用一套代码
    动态注册广播接收器,监听网络变化
    启动Activity,传递参数最佳实践
    管理Activity,随时随地控制Activity的销毁工作
    unzip解压中文文件名乱码
    mysql null值转换
    (转)使用scp命令在linux操作系统之间传递文件
    比较两个日期的大小
  • 原文地址:https://www.cnblogs.com/boring333/p/11223264.html
Copyright © 2011-2022 走看看