这篇文章主要介绍了 JavaScript 类继承及实例化的方法, 较为详细的分析了 javascript 扩展类、实例化类及类对象与成员函数的使用技巧, 需要的朋友可以参考下
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
本文实例讲述了 JavaScript 类继承及实例化的方法。分享给大家供大家参考。具体如下:
- (function(){
- var Class = {
- //扩展类
- create: function(aBaseClass, aClassDefine){
- var $class = function(){
- for(var member in aClassDefine){
- this[member] = aClassDefine[member];
- }
- if('undefined'===typeof aClassDefine.initialize){
- this.initialize = function(){};
- }
- };
- if('function' ===typeof aBaseClass){
- $class.prototype = new aBaseClass();
- }else if('object' ===typeof aBaseClass){
- $class.prototype = aBaseClass;
- }
- return $class;
- },
- //实例化类
- new: function(jclass,args){
- var jclass = new jclass();
- if(jclass.initialize){
- jclass.initialize.apply(jclass, args);
- }
- return jclass;
- }
- };
- //export
- window.Class = Class;
- })();
示例:
- //基类对象或函数
- var obj = {
- name: 'BaseName',
- init: function() {
- //...
- },
- //...
- };
- var fun = function() {
- this.name = '';
- var init = function() {
- //.. .
- };
- var getName = function() {
- return this.name;
- },
- var setName = function(name) {
- this.name = name;
- return this; //链式操作支持
- },
- //...
- };
- //从Object继承
- var class_frome_obj = Class.create(obj, {
- initialize: function() {
- //构造函数
- },
- getName: function() {
- return this.name;
- },
- setName: function(name) {
- this.name = name;
- return this; //链式操作支持
- },
- //...
- });
- //从Function继承
- var class_frome_fun = Class.create(fun, {
- initialize: function() {
- //构造函数
- },
- //...
- });
- //从空对生成基类
- var class_frome_base = Class.create({},
- {
- initialize: function() {
- //构造函数
- },
- //...
- });
- //实例化
- var get_class_frome_obj = Class.new(class_frome_obj, [arg1, arg2, ...]);
- var get_class_frome_fun = Class.new(class_frome_fun, [arg1, arg2, ...]);
- var name1 = get_class_frome_obj.getName();
- //console.log(name1);//BaseName
- var name2 = get_class_frome_obj.setName('NewName').getName();
- //console.log(name2);//NewName
希望本文所述对大家的 javascript 程序设计有所帮助。
来源: