Показать сообщение отдельно
  #4 (permalink)  
Старый 18.09.2013, 16:07
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

По моему не удачно написано в документации.
В исходниках нет нечего подобного.

Посмотри сам, нет не одной строчки ответственной за копирование прототипа при создании экземпляров

1)запускается конструктор
2) констроктор обнаруживает что в this Нет this._createWidget и вызывает new constructor( options, element )
3) теперь уже вызванный через new конструктор обнаруживает что в this есть _createWidget, ведь это уже не функция а конструктор обьекта, обнаружив это он вызывает createWidget


constructor = $[ namespace ][ name ] = function( options, element ) {
		// allow instantiation without "new" keyword
		if ( !this._createWidget ) {
			return new constructor( options, element );
		}

		// allow instantiation without initializing for simple inheritance
		// must use "new" keyword (the code above always passes args)
		if ( arguments.length ) {
			this._createWidget( options, element );
		}
	};


Собственно к этому моменту объект уже создан, в прототие общие методы. Дальше просто идет инициализация виджета отвечает за нее createWidget

Create widget занимается тем что подготавливает Опции к передачи в INIT
а так же инициализирует некоторые свойства вроде this.element
сохраняет ссылку на обьект созданный конструктором в data ( $.data( element, this.widgetFullName, this ); )
вызывает init и create,
поджигает событие "create"


_createWidget: function( options, element ) {
		element = $( element || this.defaultElement || this )[ 0 ];
		this.element = $( element );
		this.uuid = uuid++;
		this.eventNamespace = "." + this.widgetName + this.uuid;

		this.options = $.widget.extend( {},
			this.options,
			this._getCreateOptions(),
			options );

		this.bindings = $();
		this.hoverable = $();
		this.focusable = $();

		if ( element !== this ) {
			$.data( element, this.widgetFullName, this );
			this._on( true, this.element, {
				remove: function( event ) {
					if ( event.target === element ) {
						this.destroy();
					}
				}
			});
			this.document = $( element.style ?
				// element within the document
				element.ownerDocument :
				// element is window or document
				element.document || element );
			this.window = $( this.document[0].defaultView || this.document[0].parentWindow );
		}

		this._create();
		this._trigger( "create", null, this._getCreateEventData() );
		this._init();
	},
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 18.09.2013 в 17:00.
Ответить с цитированием