Показать сообщение отдельно
  #3 (permalink)  
Старый 08.10.2012, 11:36
Аватар для Maxmaxmахimus
司会
Отправить личное сообщение для Maxmaxmахimus Посмотреть профиль Найти все сообщения от Maxmaxmахimus
 
Регистрация: 29.02.2012
Сообщений: 198

во первых сделай то же самое алертом

alert( obj.options.some_option )




во вторых для наследования используй общеизвестную функцию Class, и с ней твой код будет выглядить так
п.с. в this.__construct__ описывается конструктор

// родитель
var Foo = new Class( function () {

	this.__construct__ = function ( options ) {
		 this.options = jQuery.extend( true, this.defaultOptions, options );
	};

	this.defaultOptions = {
		some_option:'foo_defoult'
	};

} );



// наследник ( в настеднике пишем только различия от родителя, либо добавляем что-то новое )
var Bar = new Class( Foo, function () {

	this.defaultOptions = {
		some_option:'bar_defoult'
	};

} );



и собственно сама функция

function Class( a, b ) {
	var description = b || a,
		superClass = b ? a : null,
		overname = Class.overname || 'super',
		Constructor = (description.name)
			? eval( "(function " + description.name +
			"(){ if ( this.__construct__ )  return this.__construct__.apply( this, arguments )})" )
			: function () {
			if ( this.__construct__ )  return this.__construct__.apply( this, arguments )
		},
		Object = function Object() {
		};

	Object.prototype = superClass ? superClass.prototype : Class.prototype;
	description.prototype = new Object;
	Constructor.prototype = new description( Constructor, description.prototype );

	var obj = Constructor.prototype;
	for ( var key in obj ) {
		if ( obj.hasOwnProperty( key ) && obj[key] instanceof Function ) {
			var parentProperty = description.prototype[key];
			if ( parentProperty )
				(function ( originalMethod, parentMethod, key ) {
					obj[key] = function () {
						var bk = this[overname];
						this[overname] = parentMethod;
						var returns = originalMethod.apply( this, arguments );
						if ( bk ) this[overname] = bk;
						else delete this[overname];
						return returns;
					}
				})( obj[key], parentProperty, key )
		}
	}

	Constructor.create = function ( args ) {
		function Object() {
			if ( this.__construct__ )  return this.__construct__.apply( this, args )
		}

		Object.prototype = Constructor.prototype;
		return new Object
	};

	return Constructor;
}


Где то был топик рассказывающий как её использовать, поищу, если не найду новый напишу.

Последний раз редактировалось Maxmaxmахimus, 08.10.2012 в 11:56.
Ответить с цитированием