declare.js
资源名称:oa.rar [点击查看]
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:3k
源码类别:
OA系统
开发平台:
Java
- /*
- Copyright (c) 2004-2006, The Dojo Foundation
- All Rights Reserved.
- Licensed under the Academic Free License version 2.1 or above OR the
- modified BSD license. For more information on Dojo licensing, see:
- http://dojotoolkit.org/community/licensing.shtml
- */
- dojo.provide("dojo.lang.declare");
- dojo.require("dojo.lang.common");
- dojo.require("dojo.lang.extras");
- dojo.lang.declare = function (className, superclass, init, props) {
- if ((dojo.lang.isFunction(props)) || ((!props) && (!dojo.lang.isFunction(init)))) {
- var temp = props;
- props = init;
- init = temp;
- }
- var mixins = [];
- if (dojo.lang.isArray(superclass)) {
- mixins = superclass;
- superclass = mixins.shift();
- }
- if (!init) {
- init = dojo.evalObjPath(className, false);
- if ((init) && (!dojo.lang.isFunction(init))) {
- init = null;
- }
- }
- var ctor = dojo.lang.declare._makeConstructor();
- var scp = (superclass ? superclass.prototype : null);
- if (scp) {
- scp.prototyping = true;
- ctor.prototype = new superclass();
- scp.prototyping = false;
- }
- ctor.superclass = scp;
- ctor.mixins = mixins;
- for (var i = 0, l = mixins.length; i < l; i++) {
- dojo.lang.extend(ctor, mixins[i].prototype);
- }
- ctor.prototype.initializer = null;
- ctor.prototype.declaredClass = className;
- if (dojo.lang.isArray(props)) {
- dojo.lang.extend.apply(dojo.lang, [ctor].concat(props));
- } else {
- dojo.lang.extend(ctor, (props) || {});
- }
- dojo.lang.extend(ctor, dojo.lang.declare._common);
- ctor.prototype.constructor = ctor;
- ctor.prototype.initializer = (ctor.prototype.initializer) || (init) || (function () {
- });
- var created = dojo.parseObjPath(className, null, true);
- created.obj[created.prop] = ctor;
- return ctor;
- };
- dojo.lang.declare._makeConstructor = function () {
- return function () {
- var self = this._getPropContext();
- var s = self.constructor.superclass;
- if ((s) && (s.constructor)) {
- if (s.constructor == arguments.callee) {
- this._inherited("constructor", arguments);
- } else {
- this._contextMethod(s, "constructor", arguments);
- }
- }
- var ms = (self.constructor.mixins) || ([]);
- for (var i = 0, m; (m = ms[i]); i++) {
- (((m.prototype) && (m.prototype.initializer)) || (m)).apply(this, arguments);
- }
- if ((!this.prototyping) && (self.initializer)) {
- self.initializer.apply(this, arguments);
- }
- };
- };
- dojo.lang.declare._common = {_getPropContext:function () {
- return (this.___proto || this);
- }, _contextMethod:function (ptype, method, args) {
- var result, stack = this.___proto;
- this.___proto = ptype;
- try {
- result = ptype[method].apply(this, (args || []));
- }
- catch (e) {
- throw e;
- }
- finally {
- this.___proto = stack;
- }
- return result;
- }, _inherited:function (prop, args) {
- var p = this._getPropContext();
- do {
- if ((!p.constructor) || (!p.constructor.superclass)) {
- return;
- }
- p = p.constructor.superclass;
- } while (!(prop in p));
- return (dojo.lang.isFunction(p[prop]) ? this._contextMethod(p, prop, args) : p[prop]);
- }, inherited:function (prop, args) {
- dojo.deprecated("'inherited' method is dangerous, do not up-call! 'inherited' is slated for removal in 0.5; name your super class (or use superclass property) instead.", "0.5");
- this._inherited(prop, args);
- }};
- dojo.declare = dojo.lang.declare;