123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- var Class = require('./Class');
- var safeGet = require('./safeGet');
- var defineProp = require('./defineProp');
- var isStr = require('./isStr');
- exports = Class({
- initialize: function Delegator(host, target) {
- this._host = host;
- if (isStr(target)) {
- target = safeGet(host, target);
- }
- this._target = target;
- },
- method: function(name, targetName) {
- var target = this._target;
- var fn = target[targetName || name];
- this._host[name] = function() {
- return fn.apply(target, arguments);
- };
- return this;
- },
- getter: function(name, targetName) {
- var target = this._target;
- targetName = targetName || name;
- defineProp(this._host, name, {
- get: function() {
- return target[targetName];
- },
- configurable: true
- });
- return this;
- },
- setter: function(name, targetName) {
- var target = this._target;
- targetName = targetName || name;
- defineProp(this._host, name, {
- set: function(val) {
- return (target[targetName] = val);
- },
- configurable: true
- });
- return this;
- },
- access: function(name, targetName) {
- return this.getter(name, targetName).setter(name, targetName);
- }
- });
- module.exports = exports;
|