<script>
/*
* 第一种,函数即类,利用prototype来模拟对象的方法,简单 ,不包括继承
*/
//------------------------------------------------------
var myclass = function () {
this.initialize.apply(this, arguments);
}
myclass.prototype = {
initialize: function (a, b) {
this.id = a;
this.name = b;
},
speak: function () { alert(this.name); }
};
var user = new myclass(1, 'yandavid')
user.speak();
//------------------------------------------------------
/*
* 第二三种,实现了简单的继承关系,只不过第二种用的是扩展Object的方法,第三种用的是prototype,其实都是
对原型的扩展,呵呵
*/
//------------------------------------------------------
var Class = {
create: function () {
return function () {//实际上把所有的属性定义到intiliaze方法(实际上是一个类)中,
this.initialize.apply(this, arguments); //然后通过对象冒充方式继承该类
}
}
}
/*
建立空类
先实例化超类,再把超类中的方法复制到子类中去,注意,实际上prototype类定义机制中并没有直接定义
类的属性是通过intilize方法,而且所有的方法都直接定义在prototype中,所以直接用原型链方式
*/
Object.extend = function (destination, source) {
for (property in source) {
destination[property] = source[property];
}
return destination;
}
var Pirate = Class.create();
Object.extend(Pirate.prototype, {
initialize: function (name) { this.name = name; },
speak: function (message) { return this.name + ':' + message + ', yarr!'; }
}
);
var a = new Pirate("sss");
alert(a.speak("Pirate"));
//------------------------------------------------------
var Person = Class.create();
Person.prototype = {/*把方法定义到prototype中,注意,是通过initalize方法初始化类的属性 */
initialize: function (name) {
alert(arguments.caller);
this.name = name;
},
say: function (message) {
return this.name + ': ' + message;
}
};
var guy = new Person('Miro');
alert(guy.say('hi'));
//------------------------------------------------------
</script>
本文介绍了JavaScript中实现面向对象编程的几种方法,包括使用函数作为类、通过原型链实现继承等。并通过具体示例展示了如何创建类及其实例。


被折叠的 条评论
为什么被折叠?



