以前同じ質問をしたのですが、誤ってベストアンサーを選んでしまったため改定も兼ねて再度質問させていただきます。
JavaScriptでのクラス(に似たもの)の定義として、以下のコードをよく見かけます。
lang
1function Class() { } 2 3Class.prototype.method1 = function () { }; 4 5Class.prototype.method2 = function () { }; 6 7Class.prototype.method3 = function () { };
これのClass.prototype
なんですが、何故これをローカル変数に格納しないのでしょうか?
Class.prototype
もオブジェクトなので、変数に格納すれば参照変数となります。
それで圧縮時にコードが短くなるよう工夫は出来ないのでしょうか。
lang
1function Class() { } 2 3var Class_prototype = Class.prototype; 4 5Class_prototype.method1 = function () { }; 6 7Class_prototype.method2 = function () { }; 8 9Class_prototype.method3 = function () { };
Google ChromeやIE 5(IE 11のF12開発者ツールより)、Firefoxでも上記のクラス(に似たもの)の宣言は可能です。
このような方法はJavaScriptの仕様として許されていますか、どのブラウザでも動く方法なのでしょうか?
また、何故誰もやっていないのでしょうか?
以前の質問で、以下の回答が出ています。
既に [ClassName].prototype の書き方が浸透しているので、
複数のプロジェクトを掛け持つ開発者は、
プロジェクト毎に書き方を変更しなくて良いと言う利点があります。
変数に格納することで、コードは短くなりますが、可読性は落ちると考えます。
コードを短くしたいのならば、完成後に圧縮する方法(Minify)を採用すれば良いので、
コーディング時は読みやすく書いておけば良いのです。
本質問では、上記以外の誰もやらない理由について解答をお願いします。
また、本質問では誰もやらない理由の他に、このコードは実行できるものなのかについても質問しています。
そちらについても回答していただければ有難いです。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/01/05 14:25
2015/01/05 14:57
2015/01/05 16:36
2015/01/05 16:57
2015/01/07 23:14
2015/01/08 05:09
2015/01/09 23:26
2015/01/10 11:26
2015/01/27 05:16