了解如何创建一个对象的时候,我们就需要给这个对象增加方法和属性。
在其他的书籍教程中,我们经常看到各种名称的方法,例如静态方法、实例方法等等,开始我查阅的时候就被这些说法搞的稀里糊涂的,于是自己总结了下,若有错误,还请指出。
1、静态方法和属性
静态方法既只允许父类调用,其他的实例均无法访问和调用的方法和属性。
var user = function(age){
// 变量age 是user对象的私有属性
var age = age;
}
// user.age 是user对象的静态方法
user.age = function(){
return this.age;
}
// 当我们将user对象实例化的时候
// zhangsan 无法使用 user 对象中
// 的 age方法
var zhangsan = new user(18);
// 实例中没有继承user对象的age方法
alert(!!zhangsan.age == false);
2、公共方法
公共方法既依此父类生成的所有实例均可以使用的方法。
var user = function(name,age){
// 公共变量
this.name = name;
this.age = age;
}
// 公共方法
user.prototype = {
getInfo: function(){
return "他的名字叫:" +this.name+ ",他的年龄是:" +this.age;
}
}
// 当我们将user对象实例化的时候
var zhangsan = new user("zhangsan",18);
// getInfo() 就是user对象的公共方法 name\age 既user对象的公共变量
alert(zhangsan.getInfo() == "他的名字叫:zhangsan,他的年龄是:18");
alert(zhangsan.name == "zhangsan");
alert(zhangsan.age == 18);
3、私有方法
私有方法是只有父类可以访问的方法和属性,他与静态方法一致,只是表现形式不一样。构造器中的var变量和参数都是私有方法。
var user = function(age){
// age 是user对象的私有属性
var age = age;
// getAget 是user对象的私有方法
function getAge(){
return age;
}
}
var zhangsan = new user(18);
// 实例中不包含user对象的age属性
// 及getAge方法;
alert(zhangsan.age == undefined);
alert(zhangsan.getAge == undefined);
4、特权方法当父类中的某一个公共方法可获取父类中的私有方法,同时我们无法修改该方法(可以删除、替换),我们称这种方法为特权方法。
可以访问私有方法,并且在公共域中可见的方法称为特权方法。特权方法不可被修改,只能替换或者删除。
var user = function(age){
// age 是user对象的私有属性
var age = age;
// 创建一个特权方法用来获取
// user 对象下的私有属性age
this.getInfo = function(){
return age;
}
}
var zhangsan = new user(18);
alert(zhangsan.getInfo() == 18);