对象
为什么使用对象(对象的作用)
使用数组存储数据时,每次存入值,而不知道这个值属于谁
假设小红身高165,体重160。将两个值放入数组中
var arr = [165,160];
当小红在网购时,客服看到了小红的数组数据。难免会发生:
客服:“亲,不好意思。冒昧的问一下,哪个是您的身高,哪个是您的体重呢?”
小红:“……”
如果使用数组,难免会因为两个相近的数值无法判断,这是谁的值。
那么使用对象时,将属性与值绑定在一起,对客服来说就比较友好了!
创建对象
方法一:
var student = {
name: '周杰伦',
birthday: 1979,
address: '台湾省新北市',
sing: function() {
console.log('本草纲目')
},
paixi: function() {
console.log('touwenziD')
}
}
方法二:
利用构造方法
var star = new Object();
star.name = '林俊杰';
star.age = 2022-1979;
star.singing = function(){
console.log('风到这里就是粘,圈住过客的思念')
}
对象的调用
-
对象的属性调用。 即对象.属性名
-
对象的属性调用。 对象[‘属性名’] (此时方括号里的属性必须加引号)
-
对象的方法调用。 对象.方法名() 调用方法时注意加括号。
console.log(star.age) console.log(star['name']) star.singing();
构造函数
在写同一类对象时,反复以方法一的格式创建对象,代码重复度高十分冗余。
利用关键字 new和关键字this可以快速创建对象
function Student(name,age,sex,id){
this.age = age;
this.name = name;
this.sex = sex;
this.id = id;
}
var a = new Student('白姨御行',25,'男',01);
new关键字做的四件事
- 在内存中创建了一个新的对象
- 让this指向这个对象
- 执行代码 添加属性方法
- 返回这个对象 不需要return
this的几个特点
- 函数在定义的时候this是不确定的,只有在调用的时候才可以确定
- 一般函数直接执行,内部this指向全局window
- 函数作为一个对象的方法,被该对象所调用,那么this指向的是该对象(谁调用指向谁)
- 构造函数中的 this 对象的实例
// 1. 普通函数
function fn() {
console.log(this); // this 指向 window
}
fn();
// 2 对象方法
var obj = {
name: 'zs',
dance: function() {
console.log(this);
}
}
obj.dance(); // this 指向 obj
console.log(that === obj); // true
// 3 构造函数
function Fn() {
this.age = '18';
console.log(this)
self = this;
}
var demo = new Fn(); // this 指向 demo
console.log(self === demo); // true
遍历对象
function Student(name,age,sex,id){
this.age = age;
this.name = name;
this.sex = sex;
this.id = id;
}
var b = new Student('四宫辉叶',22,'女',02);
}
for (var k in b) {
console.log(k+':'+b[k])
}
此时k(key缩写)代表属性,for in即使用for循环把b对象中的属性遍历。
遍历JSON
JSON是一种轻量级的数据交换格式。易于人阅读和编写
- JSON书写格式:名称/值对。
- 里面的属性和值都要用双引号括起来
var json = {
"id": "1",
"name": "andy",
"age": "18",
"tel": "110120"
}
for (var k in json) {
console.log(k); // 这里的k 是属性名
console.log(json[k]); // 这里的 obj[k] 是属性值
}