私はいくつかの方法でライブラリを構築していますが、方法はextend
で、方法はload
です。JavaScriptの関数 "this"値を変更する
Core.load('name','Hey!');
Core.extend()
は名前に基づいて一意のIDを持つ<div>
要素を作成します。実際にあなたがしたい、これを実行するためにその後
Core.extend('name',function(message){
this.innerHTML = message;
});
を:私はそれがこのように動作するようにしたいと思います。私はthis
==生成された<div>
を作りたいと思う。
私は約.call()
と.apply()
を知っていますが、明らかに変更されていません。this
拡張のコールバックパラメータのみが変更されます。 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');
}
}
}
:これはメインラインである
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()
注:ここで拡張し、負荷のためのコードです
はい!ダー!私はいつも最初のパラメータが "何を修正するか"と考えていました。私。 '.call(widgetElement、 'duh')'を実行した場合、コールバックで最初のパラメータは 'duh'になります。ありがとう:) P.S.時間が経つと一度正しいと思っています。 –