JavaScript-6-对象

概念

  1. 含义:在JavaScript中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象
  2. 属性:事物的特征,在对象中用属性表示
  3. 方法:事物的行为,在对象中用方法表示
  4. 自定义对象、内置对象属于ECMAScript;浏览器对象属于JS独有

创建方法

对象字面量创建对象{}

属性或方法采取键值对的形式,多个属性或方法中间逗号分隔,方法冒号后面是匿名函数

 var obj = {
            uname: 'cercis',
            age: 23,
            sex: '女',
            greet: function() {
                console.log('hello world!');
            }
        }
        console.log(obj.uname); //调用对象的属性,1. 对象名.属性名
        console.log(obj['age']); //调用对象的属性, 2.对象名['属性名']
        obj.greet(); //调用对象的方法

new Object创建对象

 var obj = new Object(); //创建一个空对象
        obj.uname = 'chinensis';
        obj.sex = '女';
        obj.age = 24;
        obj.sayHi = function() {
            console.log('hello world');
        }

        //(1)利用 = 赋值的方法,添加对象的属性和方法
        //(2)每个属性和方法之间 ; 结束
        console.log(obj.uname);
        console.log(obj['sex']);
        obj.sayHi();

构造函数创建对象

//语法格式
        // function 构造函数名() {
        //     this.属性 = 值;
        //     this.方法 = function() {}
        // }
        // new 构造函数名();
        function Star(name, sex, age) {
            this.name = name;
            this.sex = sex;
            this.age = age;
            this.sing = function(sang) {
                console.log(sang);
            }
        }
        var zjx = new Star('Lay', '男', 27); //调用函数返回一个对象
        //遍历对象
        for (var k in dog) {
            console.log(k); //遍历输出属性名
            console.log(dog[k]); //遍历输出属性值
        }

变量和属性

  1. 相同点:存储数据
  2. 不同点:
    变量:单独声明并赋值,使用的时候直接写 变量名,单独存在
    属性:在对象中无需声明,使用的时候必须是 对象.属性

函数和方法

  1. 相同点:实现某种功能
  2. 不同点:
    函数:单独声明并调用,函数名(),单独存在
    方法:在对象里,调用时 对象.方法

构造函数和对象

  1. 相同点:实现某种功能
  2. 不同点:
    构造函数:抽象了对象的公共部分,封装到函数里,泛指某一大类
    对象:特指某一个,通过new关键字创建对象的过程,称为对象实例化

new 关键字执行过程

  1. new构造函数在内存中创建了一个空的对象
  2. this指针指向创建的空对象
  3. 执行构造函数的代码,给空对象添加属性和方法
  4. 返回这个对象

遍历对象

for(变量 in 对象){}

内置对象

含义

J语言自带的一些对象,供开发者使用,提供了一些常用的、基本而必要的功能(属性和方法)

使用

Math对象

不是一个构造函数,不需要new来调用,而是直接使用里面的属性和方法

 //封装自己的数学对象
        var myMath = {
            PI: 3.1415926,
            max: function() {
                var max = arguments[0];
                for (var i = 0; i < arguments.length; i++) {
                    if (arguments[i] > max) {
                        max = arguments[i];
                    }
                }
                return max;
            }
        }
        console.log(myMath.PI * 2 * 2);
        console.log(Math.PI * 2 * 2);//调用内置对象math
        console.log(myMath.max(3, 5, 33332, 6, 6, 3, 3, 54, 3333));
        console.log(Math.max(3, 5, 33332, 6, 6, 3, 3, 54, 3333));//调用内置对象math

简单使用

        //绝对值
        console.log(Math.abs('-1')); //隐式转换,将字符型-1转换为数字型

        //取整
        //向下取整
        console.log(Math.floor('1.9'));
        //向上取整
        console.log(Math.ceil(2.1));
        //四舍五入取整
        console.log(Math.round(2.5));

        //随机数,Math.random()随机返回一个小数,在[0,1)
        console.log(Math.random());
        //得到两个数之间的随机整数,并且包含这两个整数
        function getRandom(min, max) {
            return Math.floor(Math.random() * (max - min + 1)) + min;
        }
        console.log(getRandom(12, 20));
        //随机点名
        var arrName = ['张三', '李四', '王五', '黄六', '赵七'];
        console.log(arrName[getRandom(0, arrName.length - 1)]);

日期对象

是一个构造函数,必须使用new来调用

       //日期对象
        var date = new Date(); //无参数,返回系统当前时间
        console.log(date);
        var date1 = new Date(2021, 8, 27); //实际输出月份+1
        console.log(date1);
        //格式化日期
        console.log(date.getFullYear());
        var year = date.getFullYear();
        var month = date.getMonth() + 1;
        var day = date.getDate();
        if (day > 26) month += 1;
        alert(month);
        var weekIndex = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
        var week = date.getDay();
        console.log('当前时间:' + year + '年' + month + '月' + day + '日' + weekIndex[week]);

封装当前时间

 function getTime() {
            var time = new Date();
            var hour = time.getHours();
            var minute = time.getMinutes();
            var second = time.getSeconds();
            hour = hour < 10 ? '0' + hour : hour;
            minute = minute < 10 ? '0' + minute : minute;
            second = second < 10 ? '0' + second : second;
            return hour + ':' + minute + ':' + second;
        }
        console.log(getTime());

获得Date总的毫秒数

 //1.通过valueOf() getTime()
        var date3 = new Date();
        console.log(date3.valueOf());
        console.log(date3.getTime());
//2.简单写法
        var date4 = +date3;
        var date4 = +new Date();
        console.log(date4);
//3.H5新增
        console.log(Date.now());

数组对象

参考文档: 数组.

字符串对象

  • 基本包装类型:简单数据类型包装为复杂数据类型

    1. 简单数据类型: var str = ‘basictype’;
    2. 简单数据类型包装为复杂数据类型: var temp = new String(‘basictype’);
    3. 临时变量的值赋给str: str = temp;
    4. 销毁临时变量:temp = null;
  • 字符串的不可变性:对字符串进行拼接或重新赋值,都是开辟一个新的内存空间,原来的内容依旧存在。因此,不可大量拼接字符串,会有效率问题

  • 返回字符位置

    1. 根据位置返回字符 charAt(index)
    2. 根据位置返回字符ASCI码 charCodeAt(index)。判断用户按下了哪个键
    3. H5新增:根据位置返回字符 str[index]
        //查找字符串“abcihfhhgisiiehsh”中i出现的位置及次数
        var str = 'abcihfhhgisiiehsh';
        var index = [];
        var count = 0;
        var j = 0;
        for (j; j < str.length;) {
            if (str.indexOf('i', j) === -1) break;
            else {
                index[index.length] = str.indexOf('i', j);
                j = str.indexOf('i', j) + 1;
                count++;
            }
        }
        console.log('位置:' + index + ' 次数:' + count);
        //返回数组['pueple','blue','red','pink','orange','green','pink']中pibk出现的位置和次数
        var arrColor = ['pueple', 'blue', 'red', 'pink', 'orange', 'green', 'pink'];
        var index = arrColor.indexOf('pink');
        var count = 0;
        while (index !== -1) {
            console.log(index);
            count++;
            index = arrColor.indexOf('pink', index + 1);
        }
        console.log(count);
        //统计 "abhdhadsoaioso"中出现次数最多的字符,并统计次数
        var str = 'abhdhadsoaioso';
        var obj = {}; //定义一个对象
        var max = -1;
        var maxObj = '';
        for (var i = 0; i < str.length; i++) {
            var pro = str.charAt(i);
            if (obj[pro]) {
                obj[pro]++;
            } else {
                obj[pro] = 1;
            }
        }
        console.log(obj);
        for (var k in obj) {
            if (obj[k] > max) {
                max = obj[k];
                maxObj = k;
            }

        }
        console.log(maxObj + ':' + max);
  • 替换字符 replace(‘被替换字符’,‘替换为的字符’):只会替换第一个字符
  • 字符串转化为数组 split(‘分隔符’)
  • toUpperCase()转换大写
  • toLowerCase()转换小写
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值