日期:2014-05-16  浏览次数:20387 次

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

//验证返回的年份正确,这里返回true
alert(user.getYearBorn() == 1990);

//这里我们无法访问它的私有变量,这里返回true
alert(user.year == null);
?

4、静态方法

?? ?有个时候,我们不需要通过对象实例的上下文来访问某个属性或方法,而只通过主体对象本身来访问,这时可以通过静态的属性/方法就行了。在js里,静态方法/属性可以在新建构造函数时直接添加。

//给Person加上一个查看出生年月的静态方法
Person.getBirth = function(){
		return "2008-8-8 08:08:08";
};
//调用这个静态方法
alert(Person.getBirthday());