对象
在 JavaScript 中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、 函数等。
对象的应用场景:描述复杂的事务
- 对象是由属性和方法组成的。
- 属性:事物的特征,在对象中用属性来表示(常用名词)
- 方法:事物的行为,在对象中用方法来表示(常用动词)
创建对象的三种方式
在 JavaScript 中,现阶段我们可以采用三种方式创建对象(object):
对象:一组数据的集合,属性和方法的集合,对这个对象进行描述。 对象的创建: var 对象名 = { 属性:属性值, 方法:函数 } 对象的访问: 对象名.属性 对象名.方法() 对象名[‘属性’] 对象名[‘方法’]() 创建空对象再去赋值: var obj = { } var obj = new Object() obj.name = 'zs' obj.sex = '男' obj.sayhi = function () { alert('sayhi') } 创建有内容的对象:两种方法 var obj = { name: 'zs', sex: 'nan', sayhi: function () { alert('sayhi') } } var obj = new Object({ name: 'zs', sex: 'nan', sayhi: function () { alert('sayhi') } })
- 利用字面量创建对象
- 对象字面量:就是花括号 { } 里面包含了表达这个具体事物(对象)的属性和方法。 { } 里面采取键值对的形式表示
- 键:相当于属性名
- 值:相当于属性值,可以是任意类型的值(数字类型、字符串类型、布尔类型,函数类型等)
- 对象的调用:
- 对象里面的属性调用 : 对象.属性名 ,
console.log(obj.uname);
这个小点 . 就理解为“ 的 ”- 对象里面属性的另一种调用方式 : 对象[‘属性名’],注意方括号里面的属性必须加引号,
console.log(obj['age']);
我们后面会用- 对象里面的方法调用:对象.方法名() ,
obj.teC()
注意这个方法名字后面一定加括号 ,或者另一种obj['address']()
var obj = { uname: '可可', age: 5, type: '阿拉斯加', teC: function() { return '吃' }, address: function() { return '中国' } } console.log(obj.uname); console.log(obj['age']); console.log(obj.teC()); console.log(obj['address']()); //结果:可可 5 吃 中国
- 利用 new Object 创建对象
- 跟我们前面学的 new Array() 原理一致
- Object() :第一个字母大写
- new Object() :需要 new 关键字
- 使用的格式:对象.属性 = 值;
- 我们是利用 等号 = 赋值的方法 添加对象的属性和方法
- 每个属性和方法之间用 分号结束
var obj = new Object(); obj.uname = '鸣人'; obj.age = 33; obj.skill = function() { console.log('影分身'); } console.log(obj['uname']); obj.skill()
利用构造函数创建对象
- 构造函数 :是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与 new 运算符一起 使用。我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。
- 在 js 中,使用构造函数要时要注意以下两点:
- 构造函数用于创建某一类对象,其首字母要大写
- 构造函数要和 new 一起使用才有意义
为什么需要构造函数:
- 通过构造函数创建的对象具有相同的属性与方法
- 构造函数属于函数的一种
- 通过构造函数创建的对象,成为实例
构造函数语法格式:
function 构造函数名() { this.属性 = 值; this.方法 = function() { } } new 构造函数名();
- ```js function Star(name, age, sex) { this.name = name this.age = age this.sex = sex } var ldh = new Star('刘德华', 20, '男') console.log(ldh.name); console.log(ldh['name']); //我们只要new Star() 调用函数就创建一个对象 zxy {} var zxy = new Star('张学友', 34, '男') console.log(zxy.sex); console.log(zxy);
构造函数注意点:
- 构造函数约定首字母大写。
- 函数内的属性和方法前面需要添加 this ,表示当前对象的属性和方法。
- 构造函数中不需要 return 返回结果。
- 如果return的是简单数据类型
return 'abc'
,不影响构造函数的返回值- 如果return的是复杂数据类型
return {name: 'ldh'}
,会影响构造函数的返回值- 当我们创建对象的时候,必须用 new 来调用构造函数。
new关键字(重要)
- new 在执行时会做四件事情:
- 在内存中创建一个新的空对象。
- 让 this 指向这个新的对象。
- 执行构造函数里面的代码,给这个新对象添加属性和方法。
- 返回这个新对象(所以构造函数里面不需要return)。
遍历对象for in
for (变量 in 对象){ }
// 遍历对象 var obj = { name: '老师', age: 18, sex: '男', fn: function() { } } // for in 遍历我们的对象 // for (变量 in 对象) { // } for (var k in obj) { console.log(k); // k 变量 输出 得到的是 属性名 console.log(obj[k]); // obj[k] 得到是 属性值 } // 我们使用 for in 里面的变量 我们喜欢写 k 或者 key
内置对象
JavaScript 中的对象分为3种:自定义对象 、内置对象、 浏览器对象
内置对象就是指 JS 语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能(属性和方法)
内置对象最大的**优点 **就是帮助我们快速开发
JavaScript 提供了多个内置对象:Math、 Date 、Array、String等
查文档
MDN: https://developer.mozilla.org/zh-CN/
- 如何学习对象中的方法
- 查阅该方法的功能
- 查看里面参数的意义和类型
- 查看返回值的意义和类型
- 通过 demo 进行测试
Math对象
console.log(Math.PI); console.log(Math.max(1, 33, 44)); // 取绝对值 console.log(Math.abs(-5)); //5 // 向下取整(往小了取)(地板函数) console.log(Math.floor(3.4)); //3 console.log(Math.floor(-5.5)); //-6 // 向上取整(往大了取)(天花板函数) console.log(Math.ceil(1.2)); //2 // 四舍五入 console.log(Math.round(5.5)); //6 // 注意: Math.round 遇到 .5 的情况则往大了取 console.log(Math.round(-1.5)); //-1 console.log(Math.round(-3.5)); //-3 console.log(Math.round(-5.4)); //-5 console.log(Math.round(7.6)); //8
封装自己的数学对象 :
var myMath = { PI: 3.1415926, max: function() { var max = arguments[0] for (i = 1; i < arguments.length; i++) { if (arguments[i] > max) { max = arguments[i] } } return max }, min: function(