/*!
|
Copyright (c) 2011, Yahoo! Inc. All rights reserved.
|
Code licensed under the BSD License:
|
http://developer.yahoo.com/yui/license.html
|
version: 2.9.0
|
*/
|
export var YAHOO = {};
|
YAHOO.lang = {
|
/**
|
* Utility to set up the prototype, constructor and superclass properties to
|
* support an inheritance strategy that can chain constructors and methods.
|
* Static members will not be inherited.
|
*
|
* @method extend
|
* @static
|
* @param {Function} subc the object to modify
|
* @param {Function} superc the object to inherit
|
* @param {Object} overrides additional properties/methods to add to the
|
* subclass prototype. These will override the
|
* matching items obtained from the superclass
|
* if present.
|
*/
|
extend: function (subc, superc, overrides) {
|
if (!superc || !subc) {
|
throw new Error("YAHOO.lang.extend failed, please check that " +
|
"all dependencies are included.");
|
}
|
var F = function () { };
|
F.prototype = superc.prototype;
|
subc.prototype = new F();
|
subc.prototype.constructor = subc;
|
subc.superclass = superc.prototype;
|
if (superc.prototype.constructor == Object.prototype.constructor) {
|
superc.prototype.constructor = superc;
|
}
|
if (overrides) {
|
var i;
|
for (i in overrides) {
|
subc.prototype[i] = overrides[i];
|
}
|
/*
|
* IE will not enumerate native functions in a derived object even if the
|
* function was overridden. This is a workaround for specific functions
|
* we care about on the Object prototype.
|
* @property _IEEnumFix
|
* @param {Function} r the object to receive the augmentation
|
* @param {Function} s the object that supplies the properties to augment
|
* @static
|
* @private
|
*/
|
var _IEEnumFix = function () { }, ADD = ["toString", "valueOf"];
|
try {
|
if (/MSIE/.test(navigator.userAgent)) {
|
_IEEnumFix = function (r, s) {
|
for (i = 0; i < ADD.length; i = i + 1) {
|
var fname = ADD[i], f = s[fname];
|
if (typeof f === 'function' && f != Object.prototype[fname]) {
|
r[fname] = f;
|
}
|
}
|
};
|
}
|
}
|
catch (ex) { }
|
;
|
_IEEnumFix(subc.prototype, overrides);
|
}
|
}
|
};
|