对象
什么是对象?
现实生活中:万物皆对象,对象是一个具体的事物,看得见摸得着的实物。例如,一本书、一辆汽车、一个人可以是"对象",一个数据库、一张网页、一个与远程服务器的连接也可以是"对象"。在JavaScript中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等。
对象是由属性和方法组成的。
属性:事物的特征,在对象中用属性来表示(常用名词)
方法:事物的行为,在对象中用方法来表示(常用动词)
创建对象的三种方式
在JavaScript中,现阶段我们可以采用三种方式创建对象(object):
- 利用字面量创建对象
<script>
var obj = {
uname:'赵飞帆',
age:20,
sex:'男',
sayHi:function() {
console.log('hi~~');
}
}
console.log(obj.uname);//赵飞帆
console.log(obj['sex']);//男
obj.sayHi();//hi~~
</script>
- 利用new Object创建对象
<script>
var obj = new Object();
obj.uname='赵飞帆';
obj.age=18;
obj.sex='男';
obj.sayHi=function() {
console.log('hi~~');
}
console.log(obj.uname);//赵飞帆
console.log(obj['sex']);//男
obj.sayHi();//hi~~
</script>
- 利用构造函数创建对象
我们前面两种创建对象的方式一次只能创建一个对象,构造函数就是把我们对象里面一些相同的属性和方法抽象出来封装到函数里面。我们利用构造函数创建对象的过程我们也称为对象的实例化。
function 构造函数名() {
this.属性=值;
this.方法=function() {
}
}
new 构造函数名();
<script>
//构造函数:泛指的某一大类,它类似于java语言里面的类(class)
function Star(uname,age,sex) {//构造函数名字首字母要大写
this.name=uname;
this.age=age;
this.sex=sex;
this.love = function(lover) {
console.log(lover);
}
}
//对象:特指,是一个具体的事物
var zff = new Star('赵飞帆',20,'男');
console.log(typeof zff);
console.log(zff);
zff.love('爱就是陈亚婷');
var cyt = new Star('陈亚婷',21,'女');
console.log(cyt.name);
cyt.love('爱就是赵飞帆');
</script>
new在执行时会做四件事情:
- 在内存中创建一个新的空对象。
- 让this指向这个新的对象。
- 执行构造函数里面的代码,给这个新对象添加属性和方法。
- 返回这个新对象(所以构造函数里面不需要return)。
遍历对象
<script>
var obj = {
name:'赵飞帆',
age:20,
sex:'男',
fn: function() {}
}
//我们使用for in里面的变量我们喜欢写k或者key
for(var k in obj) {
console.log(k);//name k变量输出是属性名
console.log(obj[k]);//赵飞帆 20 男 obj[k]得到是属性值
}
</script>