javascript 面向对象 和 javascript 类
先来看个例子:
var user = {'username':'gosoa','userage':20};
alert(user.username);
上面的js代码会alert出来 gosoa 。其中 user 就是一个javascript对象。username和userage可以看成是 user的两个属性。
再看一段代码:
var user = {
username:'fei',
userage:20,
usersex:function(_username){
if(_username=='pan'){
return '男';
}
if(_username=='fei'){
return '女';
}
}
};
alert(user.usersex('fei'));
在这段代码中,会alert出来 “女” 。
这里面,user是一个javascript对象,其有usersex 这样一个属性,其可以根据传递的参数,返回不同的结果。
这是 javascript对象的属性的另一种写法。
上面的两个例子是 javascript对象的创建方法。
我们再来看下 javascript类的实现。
其实 javascript类并不像java或者C#或者PHP等类一样,有 class xxx{} 这样的定义。
javascript的类 其实也是方法。看下面的例子:
function USER(uname,age){
this.username = uname;
this.age = age;
}
var pan = new USER('panpan',26);
alert(pan.username);
这段代码会alert出来 panpan ,function USER(uname,age)我们可以看做是定义了类,var pan = new USER(‘panpan’,26); 可以看做是实例化了一个类。this.age = age; 是类的属性。
上面的代码中,我们还可以通过 prototype 来定义类的属性。
看下面的代码示例:
function USER(){}
USER.prototype.username = 'pan';
USER.prototype.userage = 29;
USER.prototype.sex = function (_username){
if(_username=='pan'){
return '男';
}else if(_username=='fei'){
return '女';
}
}
var pan = new USER();
alert(pan.sex('pan'));
在上面这段代码中,我们通过prototype 来给USER()类添加了一些属性和方法。
当我们 new一个 USER() 实例pan的时候,pan便拥有了 USER()的所有属性和方法。
在js中,所谓的类的继承便是通过 prototype 来实现的。
