Измените значение функции this в JavaScript

Я создаю библиотеку с некоторыми методами, и у меня есть метод extend и метод load . Я ХОЧУ, чтобы это работало так:

Core.extend('name',function(message){
  this.innerHTML = message;
});

Затем, чтобы запустить это, вы должны сделать:

Core.load('name','Hey!');

Core.extend () создает элемент

с уникальным идентификатором исходя из названия.Я хочу сделать этот == сгенерированный
.

Я знаю о .call () и .apply () , очевидно, но это не меняет this , а только расширяет параметры обратного вызова. Вот код для расширения и загрузки:

Core.extend ()

var extend = function(name,func){
  name = name || '';
  func = func || function(){};
  if(typeof extensions[name] == 'undefined'){
    extensions[name] = func;
  }
  else{
    if(errors){
      throw new Error('Core extend() error: the extension "'+name+'" already exists');
    }
  }
}

Core.load ()

Обратите внимание, что это основная строка: extensions [name] .call (this, widgetElement, params) ;

var load = function(name,params,sel){
  name = name || '';
  params = params || '';
  sel = sel || '';
  if(typeof extensions[name]  !== 'undefined'){
    var widgetElement = document.createElement(settings.widgetWrapperElement);
    widgetElement.setAttribute('id',settings.prefixOnWidgetId+name);
    sel.appendChild(widgetElement);
    extensions[name].call(this,widgetElement,params);
  }
  else{
    if(errors){
      throw new Error('Core load() error: the extension "'+name+'" doesn\'t exist');
    }
  }
}
7
задан Oscar Godson 13 August 2011 в 05:11
поделиться