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());