From 55ae9f7784bb706e181db4b11cf40d0d28a6041b Mon Sep 17 00:00:00 2001 From: dhrname Date: Mon, 5 May 2014 21:56:10 +0900 Subject: [PATCH] =?utf8?q?base.js=E3=81=AE=E6=96=87=E5=AD=97=E3=82=B3?= =?utf8?q?=E3=83=BC=E3=83=89=E3=82=92UTF-8=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- tool/funcproto/base.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tool/funcproto/base.js b/tool/funcproto/base.js index 3a2cc79..361862e 100644 --- a/tool/funcproto/base.js +++ b/tool/funcproto/base.js @@ -6,6 +6,7 @@ function base(name) { if (!arguments[0]) { throw new Error("No arguments error"); } else if (this[name] && !this.__id_) { + /*upメソッドで呼ばれておらず、かつ、登録されている場合は、登録されたオブジェクトを返す*/ return this[name]; } else { var F = base.F, @@ -13,11 +14,16 @@ function base(name) { /**/ F.prototype = this.__id_ ? this : base.obj; s = new F(); + /*IE8とFirefox27では、グローバルオブジェクトのメソッドの継承がうまくできないため、以下のように、直接指定する*/ s.mix = this.mix; s.on = this.on; s.up = base; + /*__id_プロパティはupメソッドで呼ばれたかどうか判別するため*/ s.__id_ = name; this[name] = s; + /*IE8とFirefox27では、グローバルオブジェクトのプロトタイプ継承がうまくいかないため、 + *次のような自身が値であるようなプロパティを設定する + */ s[name] = s; F = void 0; return s; @@ -26,10 +32,12 @@ function base(name) { this.__id_ = null; +/*base.Fはbase関数で使うコンストラクタ関数*/ base.F = function() {}; base.obj = {}; (function(){ + /*mixメソッドで使うNGハッシュを作成*/ var hash = {}, proto = Object.prototype; for (var i in proto) { @@ -46,6 +54,9 @@ this.mix = function(obj) { var alias = base; for (var i in obj) { if (!alias.__ng_[i]) { + /*hasOwnPropertyメソッドを使わないのは、プロトタイプチェーンをたどるようにするため + *なお、Object.prototypeとグローバルオブジェクトのプロパティなどは外した方がエラーがおきにくい + */ this[i] = obj[i]; } } @@ -63,7 +74,7 @@ this.on = function(name, func) { throw new Error("Not support arguments type"); } this._eventList__ = this.hasOwnProperty("_eventList__") ? this._eventList__ : []; - if (this[name] && !this[name].isOn) { + if (this[name] && !this[name].isOn) { //まだ、onメソッドが呼び出されていなければ if (typeof this[name] === "function") { this._eventList_.push(this[name]); } -- 2.11.0