Javascript面向对象是一个很奇怪的,跟其他语言的棉面向对象有区别。
创建对象
1.使用常见的new Object()来创建
var box = new Object(); //创建对象
box.name='Lee'; //创建属性
box.age = 100;
box.run = function(){ //创建方法
return box.name+" is "+this.age
};//this表示当前作用域下对象
//this表示new Object()实例化出来的那个对象
alert(box.run()); //打印出对象的方法
2.工厂模式
function createObject(name,age){
var obj = new Object();
obj.name= name;
obj.age = age;
obj.run = function(){
return this.name+" is "+this.age;
};
return obj; //返回对象引用
}
var box1 = createObject('Cai',27); //创建第一个对象
alert(box1.run()); //打印第一个对象实例的方法
3.构造函数
function Box(name,age){
this.name=name;
this.age = age;
this.run = function(){
return this.name+" is "+this.age;
};
};
var box1 = new Box('Cai',27); //实例化
var box2 = new Box('Jack',22);
alert(box1.run());
注意事项:
1.构造函数没有new Object,但它后台会自动var obj = new Object
2.this就相当于obj
3.构造函数不需要返回对象,它是后台自动返回的。
1.构造函数必须也是函数,但函数名第一个字母大写
2.必须new 构造函数名(), new Box(),而这个Box第一个字母也是大写的。
3.必须使用new运算符。
var o = new Object(); Box.call(o,'Cai',27); //对象冒充 alert(box.run = box2.ru) //false是因为他们的引用地址不一样
4.字面量方法
var obj = {
name:"qdkfweb.cn",
run:function(){
return obj.name;
}
}
alert(obj.run());
