eoo
Version:
A powerful Javascript Class Factory (Object oriented)
39 lines (34 loc) • 1.32 kB
JavaScript
/**
* @file protect.js proviede protect member feature
* @author exodia(d_xinxin@163.com)
*/
(function (define) {
define(
function (require) {
var META = require('./constant').META;
var u = require('./util');
var inheritStatic = require('./static');
function defineProtect(Class, privateToken) {
Class[META] = Class[META] || {};
Class[META].protectToken = privateToken;
if (Class.$superClass && Class.$superClass[META] && Class.$superClass[META].protectToken) {
var parentProtect = Class.$superClass[META].protectToken.getPrototype();
var currentProtect = privateToken.getPrototype();
var protectInstance = inheritStatic(parentProtect);
u.eachObject(currentProtect, function (value, key) {
protectInstance[key] = value;
});
protectInstance.$super = parentProtect;
privateToken.setPrototype(protectInstance);
}
}
return defineProtect;
}
);
}(
typeof define === 'function' && define.amd
? define
: function (factory) {
module.exports = factory(require);
}
));