javascript里的方法
1、公共方法 public
??? 公共方法在对象的上下文中是最终用户始终可能接触到的。这种方法可以通过prototype的属性来实现。prototype包含了一个可以作为副本的base reference的对象,在对象原型中添加的的属性与方法都能由该对象的实例化对象访问,这样就做到了对象方法的公有化
//新建一个Pet构造函数(js没有类,而是构造函数)function Pet(name, type){ this.name = name; this.type = type;} //为Pet添加一个得到对象名字的方法 Pet.prototype.getName = function(){ return this.name;};//为Pet添加一个得到对象类型的方法 Pet.prototype.getType = function(){ return this.type};//实例化对象var pet = new Pet("tiger","dog");//通过get方法查看刚创建的能对象的属性alert("name = "+pet.getName() + ", type is " + pet.getType());
2、私有方法 private
?? ?私有方法是只允许其内部的其它私有方法/变量,特权方法访问。
//创建一个Person的构造函数function Person(name, salary){//为其添加一个查看薪水的函数function getSalary(){alert("this is secret");}this.name = name;this.salary = salary;//查看一下薪水getSalary();}//实例一个person的对象var person = new Person("barry",10000);try{ //这里调用会出错,这是一个私有的方法,不能被访问 //所以会执行catch里的内容proson.getSalary();}catch (e){alert("这是我的秘密,告诉你!");}
3、特权方法 privileged
?? ?特权方法是指代那些用在查看并处理(对象中)私有变量的同时允许以公共方法的方式访问的方法(John Resig:精通javascript中原文)。
?
//创建一个新的User对象的构造函数function User(name, age){//尝试算出用户出生的年份var year = (new Date()).getFullYear() - age;//创建一个新的特权方法,能够访问year变量,同时自身属于公共可访问的this.getYearBorn = function(){return year;} }//创建user对象的一个新实例var user = new User("Bob",20);//验证返回的年份正确,这里返回truealert(user.getYearBorn() == 1990);//这里我们无法访问它的私有变量,这里返回truealert(user.year == null);?
4、静态方法
?? ?有个时候,我们不需要通过对象实例的上下文来访问某个属性或方法,而只通过主体对象本身来访问,这时可以通过静态的属性/方法就行了。在js里,静态方法/属性可以在新建构造函数时直接添加。
//给Person加上一个查看出生年月的静态方法Person.getBirth = function(){return "2008-8-8 08:08:08";};//调用这个静态方法alert(Person.getBirthday());