Javascript对象

1、什么是对象

JavaScript 中,对象是一种复合的数据类型,用于保存一组无序的相关属性和方法的集合。
属性: 描述事物的特征,常用名词来定义
方法: 描述事物的行为,常用动词来定义
JavaScript 中对象分为以下几种:
(1) 内置对象
ES 标准中定义的对象,在任何 ES 实现中都可以使用,如: Math String Number
Function Array 等。
(2) 宿主对象
JavaScript 运行环境(浏览器)提供的对象,如: BOM DOM
(3)自定义对象
由开发人员自己创建的对象。

2、为什么需要对象

例如:我们要存储人的信息

        var name = '张三';
        var age = 18;
        var gender = '女';

这种方式能够解决问题,但是会浪费很多资源。

还可以使用数组来定义:

var person = ['张三', 18, '女'];

能够解决,但是不方便。

使用对象来进行存储,更加方便。

使用变量可以保存一个值,使用数组可以保存多个值。但是想保存一个人的完整信息时,使用变量和数组都不太适合,这时就需要使用对象了。

3、如何定义对象

JS 中定义对象有以下三种方式:
(1)使用字面量来创建;
(2) 使用 new 关键字来创建;
(3)使用构造函数来创建

3.1、字面量创建

在定义对象时,可以使用字面量大括号 {} 来定义。在大括号中可以声明属性和方法。属性和
值之间使用英文冒号来创建,属性与属性之间使用逗号来分隔。
        var person = {
            'name': '张三',
            age: 18,
            gender: '男',
            say: function() {
                console.log(this.name);
            }
        }
        console.log(person, typeof person);

说明:

(1)对象中的属性名称是字符串,我们可以把属性名称写在引号,也可以省略引号;

(2)属性的值如果是数字,则可以不写引号,否则需要写引号,当属性值不是数字并且没有写在引号中时,会把它当作变量来使用。

3.2、使用new object

语法格式:var 对象引用名称 = new Object();

        var obj = new Object();
        obj.name = '李四';
        obj.age = 20;
        obj.speak = function() {
            console.log(this.name);
        };
        console.log(obj);

3.3、使用构造函数

这种方式是需要先创建一个构造函数对象。然后再使用 new 关键字来创建。
语法格式:
function 对象 ( 参数列表 ){
        设置
}
var 对象名称 = new 对象 ();
        function Student(name, age) {
            this.name = name;
            this.age = age;
        }
        var stu = new Student('王五', 21);
        console.log(stu, typeof stu);

说明:在定义构造函数时,函数名称的第一个字符要大写。

4、使用对象

当对象声明好后,就可以使用 对象的引用名称 . 属性名 对象引用名称 . 方法名 的方式来使用这
个对象。
        var person = {
            name: '张三',
            age: 18,
            gender: '男',
            show: function() {
                console.log(this.name + ', ' + this.age + ', ' + this.gender);
            },
            say: function(s) {
                console.log('hello ' + s);
            }
        }
        console.log(person.name);
        console.log(person.age);
        person.show();
        person.say('world')
使用对象的属性还可以通过 对象引用名称 [ 属性名 ] 的方式来访问。
        var person = {
            name: '张三',
            age: 18,
            gender: '男',
            show: function() {
                console.log(this.name + ', ' + this.age + ', ' + this.gender);
            },
            say: function(s) {
                console.log('hello ' + s);
            }
        }
        console.log(person.name);
        console.log(person['gender']);
什么时候使用.的方式,什么时候使用[]的方式?
(1) 如果属性名是数字,那么只能通过中括号的方式来读取。
        var person = {
            name: '张三',
            10: 20,
        };
        console.log(person);
        //console.log(person.10); // 不能这么读 
        console.log(person['10']); // 可以

(2)如果属性名称中有空格或特殊字符,那么属性名的引号就不能省略,访问这种属性时,只能通过中括号的方式来访问

      var person = {
            name: '张三',
            'first name': '小刘',
        };
        console.log(person);
        //console.log(person.'first name'); // 也不行,会报错 
        console.log(person['first name']); // 可以

(3)当访问对象时是使用的某个变量时,则需要使用中括号的方式。不能使用 . 的方式。

        var x = 'name';
        var obj = {
            name: '张三丰'
        }
        console.log(obj.name);
        console.log(obj['name']);
        console.log(obj[x]);

5、内置对象

JavaScript 提供了多个内置对象: Math Date String Function Array 等。

5.1、Math()

Math 对象不是构造函数,它具有数学常数和函数的属性和方法。跟数学相关的运算(求绝对
值,取整、最大值等)可以使用 Math 中的成员。

 示例:

        console.log(Math.max(90, -10, 45, 93, 87));
        console.log(Math.min(90, -10, 45, 93, 87));
        // floor 返回比它小的最大的整数 
        console.log(Math.floor(2.9)); // 2 
        console.log(Math.floor(-2.9)); // -3 
        // ceil 返回比它大的最小的整数 
        console.log(Math.ceil(2.1)); // 3 
        console.log(Math.ceil(-2.1)); // -2 
        // round 四舍五入 
        console.log(Math.round(4.6)); // 5 
        console.log(Math.round(4.5)); // 5
        console.log(Math.round(4.4)); // 4 
        // random 随机数 
        console.log(Math.random());

5.2、Date()

Date 对象和 Math 对象不一样, Date 是一个构造函数,所以使用时需要实例化后才能使用其中
具体方法和属性。
示例:
        // Date 是一个构造函数,要使用它之前需要实例化这个对象,通过 new 关键字来实现
        var d = new Date();
        console.log(d); //Mon Feb 14 2022 16:24:11 GMT+0800 (中国标准时间)
        console.log(d.getFullYear()); //年
        console.log(d.getMonth() + 1); //月
        console.log(d.getDate()); //获取月中的天
        console.log(d.getHours()); // 小时
        console.log(d.getMinutes()); // 分钟
        console.log(d.getSeconds()); // 秒钟
        console.log(d.getMilliseconds()); // 毫秒

        console.log(d.getDay()); //获取在周中的天

        console.log(d.getUTCDate());
        console.log(d.toLocaleString()); //2022/2/14 16:32:58
        console.log(d.toTimeString()); //16:32:58 GMT+0800 (中国标准时间)
        console.log(d.toDateString()); //Mon Feb 14 2022
        console.log(d.toLocaleDateString()); //2022/2/14
        console.log(d.toLocaleTimeString()); //16:32:58

注意:

(1)使用getMonth()方法获取到的是当前月份减一的值;

(2)获取月中的天数的方法是getData(),获取周中天的方法是getDay()。

5.3、String()

JS 中为我们提供了三个包装类,通过这三个包装类可以将基本数据类型的数据转换为对象。
(1) String() :可以将基本数据类型字符串转换为 String 对象;
(2)Number() :可以将基本数据类型的数字转换为 Number 对象;
(3) Boolean() :可以将基本数据类型的布尔值转换为 Boolean 对象
包装类就是把简单数据类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法。
        var n = 10;
        console.log(n, typeof n);
        n = Number(n);
        console.log(n, typeof n);
        var f = true;
        console.log(typeof f);
        console.log(typeof Boolean(f));
字符串不可变是指当字符串的值是不可变的。当重新给字符串变量赋值时,变量之前的值不会被
修改,而是在内在中重新开辟了一个空间,然后把地址指向了新的内在空间地址而已。
因为字符串的不可变性,因此不建议在循环中使用字符串拼接操作。(占内存)
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值