`
xjtusaber
  • 浏览: 54028 次
  • 性别: Icon_minigender_1
  • 来自: 龙黄
社区版块
存档分类
最新评论

Javascript中Class的定义

阅读更多
/**
 * 工厂方法:
 * 存在问题:重复创建对象eat
 */
function CreatePeople(name){
  var  people=new Object();
  people.name=name;
  people.eat=function(){
  	alert(this.name+' is eating  !!')
  };
  return people;
}
/**
 * 构造函数法:
 * 存在问题:重复创建对象eat
 * 使用new 来创建对象,如:var p=new People('saber')
 * 在执行第一句代码前,先创建一个对象(并返回,所以构造函数最后无须return),只有用this才能访问该对象,
 * 
 */
function People(name){
  this.name=name;
  this.eat=function(){
  	alert(this.name+' is eating  !!')
  };
}
/**
 * 混合的构造函数/原型方式(推荐)
 */
var People1=function (name){
	this.name=name;	
}
People1.prototype={
	eat:function(){
		alert(this.name+' is eating !')
	}
}
/* 自定义构造函数为:initialize
 * 在使用new创建对象的时候,执行initialize函数,
 */
var People11=function (){
	this.initialize.apply(this, arguments);
}
People11.prototype={
	initialize:function(name){
		this.name=name;
		alert(' Initializing Ok !!');
	},
	eat:function(){
		alert(this.name+' is eating !')
	}
}
/* 有以上基础,如果我们要以一种统一的方式来定义类,该如何呢?
 * 像java中定义类都采用Class关键字一样,而在JS中,没有类这个概念,
 * 那么我们首先声明一个对象MyClass
 */

var MyClass=function(){
	return function(){//闭包
	    this.initialize.apply(this, arguments);
	}
}
/*
 * 定义类:
 */
var ClassOne=MyClass();
ClassOne.prototype={
	initialize:function(name){
        this.name=name;	
        alert(this.name+' initializing Ok !')
	},
	methodOne:function(){
		alert("My name is:" + this.name);
	}
}

var ClassTwo=MyClass();
ClassTwo.prototype={
	initialize:function(name){
        this.name=name;		
	},
	methodTwo:function(){
		alert("My name is:" + this.name);
	}
}

/**
 * 采用prototype.js,它的方法和我们上边的一样:
 * var Class = {
 * create: function() {
 *  return function() {
 *    this.initialize.apply(this, arguments);
 *  }
 * }
 *}
 */
var People2=Class.create();
People2.prototype={
	//自定义的构造函数:initialize
	initialize:function(name,sex){
		this.name=name;
		this.sex=sex;
	},
	eat:function(){
		alert(this.name+' is eating ');
	},
	showSex:function (){
		alert(this.name+'\'s sex is :'+this.sex);
	}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics