对象
介绍
- JS核心概念:万物皆对象,我们在编程中,使用对象来描述万事万物。
- 对象:使用属性描述事物的特征,使用方法来描述功能, 就是对象这种语法。
- 对象:属性和方法的集合体;
- 数组:数据集合体;
- 对象 描述 扳手 :
- 属性(特征):名称 金属、银白色,
- 方法:能拧螺丝、防身等;
为什么
- 之前学习过的对象:Math、new Date();我们发现,只要学习对象的一些属性和方法,直接使用,就可以得到自己想要的效果。例如-得到随机数: Math.random() ;我们不需要关心随机数到底是怎么产生的,只要结果;
- 这就要涉及到一个在编程界内的著名思想:面向对象思想、万物皆对象
- 面向对象思想:学习一个对象(工具包),看它身上有什么方法和特点,能帮我干什么事,然后我就可以用这个工具包,按照我们的思维安排这个工具做事件就可以。
// 新找到一个日期对象
// Date 构造函数,构造出一个我们需要的工具,就是对象;
var date = new Date();
// 调用日期对象的获取年份的方法
date.getFullYear();
// Math对象
Math是 内置对象;
Math.floor();
-
特点:对于开发人员更友好的开发;
-
实现高效开发:我们只要知道对象(工具)有什么属性和方法,不需要知道对象里面是如何实现的。在别人已经提供好的方法的基础上,再次实现我们想要的效果,开发过程将大大缩短。
-
便于维护:因为你是单个对象(工具),我可以随时对你进行改造,修改;满足我的需要;
语法
- 创建
-
构造函数:
var obj = new Object(); // 这是一个没有属性和方法的对象 console.log(obj); -
字面量:从字面上能看出数据的类型;
var obj = {}; // 这也是一个没有属性和方法对象,其本质和构造函数创 建的对象是一样的 console.log(obj,typeof obj);
-
添加
- 如: 使用对象描述一个叫狗蛋的人,先字面量声明一个对象,再给对象上属性和方法赋值;
var obj = {};
// 对象.属性 = 值;
obj.name = '狗蛋';// 名字是一个人的特征
// 在对象上的任何方法内都可以获取,和设置;
// 对象.方法名 = function(){}
// 注意:该方法后面的的赋值为一个函数,函数在什么时候执行?调用的时候才会执 行;
obj.sayName = function(){ // 人会说出自己的名字,也就是人有自己的行为
console.log('你好,我叫' + obj.name);
}
- 通过字面量初始化对象时,初始化属性
// 描述一个学生
var student = {
name : '狗蛋',
age : 12,
gender : '男',
sayName : function(){
console.log(student.name);
}
}
//
- 一个属性和一个值叫键值对。多个键值对之间使用逗号分隔,键的方式添加属性:
// 对象[属性名] 属性名必须是String类型,里面可以写字符串;
var obj = {};
obj['name'] = '狗蛋';
obj['sayName'] = function(){
console.log('你好,我叫' + obj['name']);
}
获取
- 点属性获取
// 得到对象的名字,属性可以当成变量使用
console.log(obj.name);
// 调用对象的方法,方法的本质是函数
obj.sayName();
- 以键的方式访问属性
console.log(obj['name']);
obj['sayName']();
遍历
- 数组可以遍历;对象也可以遍历;
// key 就是obj这个对象中的每个键,obj就是要遍历的对象。
for(var key in obj){
}
var obj = {
name : '狗蛋',
age : 12,
gender : '男'
};
for(var key in obj){
console.log(key);
// 只能通过键的方式获取值
console.log(obj[key]);
}
方法小结
- 字符串分为数组:
var arr = nums.split(',');
- 数组的拼接:把多个数组合并成一个新的数组,而不会改变原来的数组;
var arr = [1, 2];
arr = arr.concat('a');
arr = arr.concat(5, 6);
arr = arr.concat([4, 8], [9, 0]);
// 快速的复制一个数组,绝对不是
// var arr_1 = arr;
var arr_1 = arr.concat();