javascript对象的知识点
- 可以通过字面量的方式创建对象
var obj={
name:'小红",
age:18
};
通过类似于josn键值对这种方式创建的对象不够灵活,创建对象的时候一开始就把对象的行为给写死了,如果要创建多个不同的对象,又要重新
- 通过new关键字创建对象
var obj=new Object();
obj.name="小红";
obj.age=18
这种创建对象的方式有以下几个问题:
- 每次创建新的对象都需要重新创建对象的属性和方法
- 创建的对象都是继承与object,这样我们创建不同的对象时,实例对象 instanceof Object都将返回true,没什么区别
- 创建对象的属性和方法都暴露在外面,没有封装好不安全(尽管js没有private,protected,default这些修饰权限)
3.通过工厂方式创造对象
var Factory=function(name,age){
var obj={};
obj.name=name;
obj.age=age;
obj.say=function(){
console.log("我的姓名是:"+this.name+",我的年龄是:"+this.age);
}
return obj;
}
myfactory=Factory("新时光我好",20).say();
这种方式创建的对象可以通过传入不同的参数,创建不同的对象但是有一个缺点如果创建的是不同的对象比如创建汽车对象和飞机对象,调用instanceof,因为都继承与Object对象,所以返回true,但实际上这两个对象怎么可能是同一类的对象
4.构造函数式创建对象
function Person(name,age){
this.name=name;
this.age=age;
this.say=function(){
console.log("我的姓名是:"+this.name+",我的年龄是:"+this.age);
}
}
student=new Person("新时光我好",20);
student.say();
使用这种方式创建的对象,myperson instanceof Person这样就可以分辨出来谁是谁创建的对象了。