JS面向对象--创建对象
1.对象的创建及常用的操作
第一种是使用new运算符
例子:var obj = object();
obj.name = "puyao";
obj.age = 20;
obj.address = "四川成都";
第二种是我们常用的字面量
例子:var obj ={
name ="puyao";
age = 20;
address = "四川成都";
};
第三种是简单方式(传统赋值方式)
例子:var obj ={};
obj.name = "puyao";
obj.age = 20;
obj.address = "四川成都";
2.属性的调用
调用的方法:
alert(obj.name + " " +obj.age);//返回“puyao 20”
另一种调用方法:
alert(obj[‘name‘] + " " +obj[‘age‘]);
3.创建对象
例子: var obj = new object();
obj.name = "puyao";
obj.age = 20;
obj.name = "四川成都";
像这样创建一个对象时比较直观的,也是javascript创建对象的基本方法。但是如果要创建
多个对象的时候,像这样的要写很多个,比较麻烦,所以我们用到工厂模式这种方法。
工厂模式的例子:
function createObj(name,age){
var obj = new object();
obj.name = name;
obj.age = age;
obj.name = address;
obj.show = function(){
return this.name + " " + this.age;
};
return obj;
}
var obj1 = ("puyao1",20);
var obj2 = ("puyao2",22);
alert(obj1.show());
alert(obj2.show());
这个工厂模式方法解决了创建多个对象的难题,但是还是存在一个重要问题,那就是对象识别。以上的代码
根本弄不清楚到底哪个是哪个创建,所以我们就必须用到构造函数的方法来识别。
4.构造函数(构造方法)
例子: function user(name,age){
this.name = name;
this.age = age;
this.show = function(){
return this.name + " " +this.age;
};
}
创建对象的时候用new运算符就可以了
var user1 = new user("puyao1",20);//第一实例
var user2 = new user("puyao2",22);//第二实例
我们可以用instanceof来检验user1或者user2是不是属于user
alert(user1 instanceof user);//true
要创建user对象的新实例,就要用到new操作符,使用这个方法构建实例对象,会经过下面4个步骤
(1)创建一个新对象;
(2)讲构造函数的作用域给新对象(因此this指向这个新对象);
(3)执行构造函数内的代码(在为新对象添加属性);
(4)返回新对象。
还要注意以下的问题
1.构造函数也是函数
区别:构造函数与函数的唯一区别,就是调用方式不同,不过构造函数也是函数,不存在什么特殊的定义构造函数的语法。
任何函数,只要通过new操作符来调用,就可以把它看作函数,而任何函数,如果不通过new操作符调用,它就与普通函数
没有什么区别,例如上面定义的obj.
//当作构造函数调用
var user1 = new user("puyao",20);
user1.show();//puyao 20;
//当作普通函数调用
user("puyao",20);
window.show();//puyao 20;
上面代码显示的结果没有什么区别,只是当作普通函数调用的话,函数里this对象的指向,就是指向window全局对象
而通过new关键字调用,this指向的只是新对象而已。