一、对象
概念理解
对象是什么?太简单了,请欣赏下图:
哈哈 开个玩笑easy easy!下面进入正题:
提到对象首先会冒出来的就是“一切都是对象”这句话;这么讲太笼统抽象了。具体的说在编程语言里对象是一种比较特殊的数据结构(类型),可以用来描述具体的某种事物,在对象这种数据类型里,还可以存储其他的复杂的数据结构,简而言之,对象是若干属性的集合,具有强大的封装性,由此可见,在编程语言中,并不是一切都是对象,值类型就不是;
对象里是属性的集合?不会吧,对象里有属性还有方法啊,对,方法也是属性,一般是用来描述对象具有的“行为”,只是他以键值对的形式出现,因此对象里都是属性这句话是没问题的。
Js里window document 都是系统自带的对象,原始类型(null undefined, number, string, boolean)属于简单的值类型,不是对象。函数、数组也是对象。他们属于引用类型。
二、对象的创建
1.字面量法
var obj = {
name : '小雪',
age : 18
}
判断一个变量是不是对象非常简单。值类型的类型判断用运算符typeof,引用类型的类型判断用运算符instanceof。
console.log(typeof obj);
function fn(){
}
console.log(fn isntanceof Object);//true
1)对象属性的访问
使用点语法和中括号语法访问对象的属性
console.log(obj2.name); //小雪
console.log(obj2['name']); //小雪
2)在对象中我们可以设置属性(对象的特征)和方法(对象的行为),有了这些属性对象就鲜活起来,成为程序中的基本单位,我们可以用活他,让合适的对象去实现对应的功能,对象可以任意的扩展属性,如:声明一个包含多种数据结构的对象(来形容一个人)
var person = {
name : '小玲',
age : 18,
isMarry : false,
friends : [
{
name : '小颜',
sex : '女',
isVIP : true
},
{
name : '旭哥',
sex : '男',
isVIP : true
}
],
boyFriend : {
name : '男朋友',
age : 28
},
//属性值也可以是函数, 注意:是匿名函数
sayHello : function (sayContent) {
//this 在这里表示当前对象
console.log("大家好,我叫:" + this.name + ", 年龄:" + this.age + ", 我要说:" + sayContent + ", 我的男朋友叫:" + this.boyFriend.name);
}
}
二、工厂函数创建对象
function makePerson (name, age) {
return {
name : name,
age : age,
sayHello : function () {
console.log("大家好,我叫:" + this.name + ",年龄:" + this.age);
}
}
var person1 = makePerson('大娃', 20);
var person2 = makePerson('大娃', 20);
console.log(person1); // Object {name: "大娃", age: 20}
console.log(person2); // Object {name: "三娃", age: 18}
每新建一个对象就在内存中开辟一个新的空间,这些对象指向的空间地址不同,他们是不一样的。
console.log(person1 === person2); //false
文章太长写的累看的烦,所以创建对象的第三种方法构造函数放在了下篇,更重要的是要引出下一篇笔记的主题—函数和对象的关系。