のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,432,615人
昨日:no data人
今日:
最近の注目
人気の最安値情報

元スレ+ JavaScript の質問用スレッド vol.119 +

JavaScript覧 / PC版 /
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

751 = :

> グローバル空間でeventを拾っている為、負荷の高い処理をしてタイミングを違えると別のイベントを拾ってしまう。
イベントがマルチスレッドで実行されない限り、別のイベントを拾う事はないでしょ
逆にマルチスレッドだったら、イベント内のプログラムがまともに動かないよ

753 = :

>>751>>752
スマン間違えた…
イベント処理中に別のイベントが発生したら処理が割り込まれて、
戻った際にグローバル変数が変わってる事は有り得る

イベント処理内を再入可能にするには、グローバル変数に依存してはいけなかった

754 = :

質問です。
簡単なクイズのサイトを作ろうと思ってますが、
javascriptでクイズの答えを判断させようとすると
解答者にはソースを表示で一発でばれることに気づきました。
みなさんならどのようにクイズの答えを判断させますか?

ちなみに、私はこんな感じに作ってしまいました。
if(moji == "う"){window.alert("正解");}

755 = :

質問と答えの配列作って比較する
if 文に直接は書かないな

756 = :

>>754
サーバーに送信して
正解かどうか答えを出す。

JavaScriptを使う必要はないね。

757 = :

「簡単なクイズ」だからぱっと見て分からない程度に出来たらいいんじゃね

758 = :

>>754
確実にやるならサーバサイドで判定させる
簡易的でよければ、ハッシュ値で比較する

759 = :

普通にリンクで飛ばしてどれかが正解のページを返せばいいだけだろ

760 = :

別URLに回答をおいておいてajaxで読んで判定
はい論破

761 = :

ステートフルJavaScriptは

var Person = function(){};
(function(){
var findById = function(){ /* ... */ };
Person.find = function(id){
if (typeof id == "number")
return findById(id);
};
})();

のような形で、プライベートなメソッドを作る方法を紹介しています
メソッドはこの形でできますが、
インスタンスにプライベートなプロパティを持たせる場合はどうやればいいのでしょうか?

762 = :

プロパティとか、言葉の意味を知らないで質問してるのかな
入門書でちゃんと基礎からやらないと上達しないよ

763 = :

>>762
知らない言葉を使われたから気分を損ねたのか
これはA級質問だから分からなくても気にしなくていいよ

764 = :

>>762は僕ではありません

765 = :

意味不明の成りすましだな
アホ極まれり

766 = :

プライベートプロパティを作るために
インスタンスごとにクロージャを作るのはどうなのか?と思うのです
ステートフルJavaScriptの著者は
_でプライベートなメンバを作る方法を「醜悪」と言っていますが
インスタンスごとのプライベートメンバについては何も言っていません。
_を、自分はさほど醜悪だとは思いません。
通常の技術者なら間違えることはない、実際的な方法だと思います
プライベートメンバを厳密に実現するのはあくまで理想論で、
実際に使われているコードは多くの場合_を使っているのではないかと思うのですが
どうなのでしょうか?

767 = :

>>761との関連が意味不明

>のような形で、プライベートなメソッドを作る方法を紹介しています
>メソッドはこの形でできますが、
>インスタンスにプライベートなプロパティを持たせる場合はどうやればいいのでしょうか?

768 = :

>>767
本気で言ってるなら単にあなたが愚かなだけです

769 = :

先に言ったようにこれはA級質問ですので、A級以上の方お願いします
並の人が無理に答えようとするとおかしな感じになりますので

770 = :

答える価値のない質問が増えたなー

771 = :

初心者が設計の根幹を学ぶ書籍に手を出して、枝葉末節の葉っぱに引っかかってしょうもない質問を連発してるって感じ。

772 = :

何度も言いますが、これはA級質問ですので、A級以上の方お願いします
>>770>>771みたいな答えられない低脳は黙っていてください

773 = :

負け惜しみはいいですからw
分かることは答える
分からないことは黙っておく
この方針でお願いします

774 = :

ことわります。

だいたいこのスレはそんな馴れ合いでやってるんじゃない。
やるかやられるかの世界だ。

775 = :

>>761

function objectFactory(hoge){
var private = hoge;
var obj = { public: function(){return private}}
return obj;
}

var obj = objectFactory("fuga");

みたいな感じですかね
簡単でわかり易いからよく使うよ

776 = :

>>775
なるほど
ファクトリでクロージャにするんですね
そうなると直接newせずに必ずファクトリを経由する感じになりますね
あるいはファクトリをコンストラクタ関数のメンバにしたらキレイできるかもしれませんね
少しこの方向で考えてみます
ありがとうございました

777 = :

この程度の質問でA級か
高い本も宝の持ち腐れだな

778 = :

いちいち煽らないの

779 = :

ステートフル君の支離滅裂さがすごい
病んでるな

780 = :

初心者の評価程、あてにならないものはない

781 = :

技術的な言葉をまったく使わずに煽る人が何でこのスレにいるのか分かりませんね
そんなに底が見えるのが嫌なのでしょうか?
その姿勢から底が見えてるんだが?

782 = :

質問者も相当煽っていると思うが、自覚がないんだな

783 :

A級ってどのくらいですか?
日本の会社に雇われて、翻訳された技術書読んで
コードを書く仕事をしてるレベルだと何級ですか?

784 = :

>>775
S級()の俺がやってきましたよ↓ここまで書ければS級

var Hoge = (function () {
var private;
function Hoge(hoge) {
private = hoge;
}
Hoge.prototype.hage = function () {
console.log(private);
};
return Hoge;
})();

var hoge = new Hoge('hage');
hoge.hage(); → hage

785 = 783 :

ギャグはもういいですから!

786 = :

>>784
それ関数定義だから厳密にはだめだな。
さすがS級だわw
はやくR級くらいにはなれよ

787 = :

このスレ使えない奴ばかりだな。

788 = :

>>784
なるほど
コンストラクタをまるごと即時関数に包むのですね
ステートフルJavaScriptでは
汎用的なClassクラスを作っているのですが、
そのClassクラスとの親和性も良さそうです
ありがとうございました

790 = :

ん?
よく考えたら>>784のやり方だと、
全てのインスタンスのprivateが共通になってしまうのでは?

791 = :

>>788
なぁ、そのくだらない話いつまで続けるの?
もう少し実践的な話をしたいんだけど。

792 = :

海外に発注した時の
コメントの言語はどうしていますか?

793 = :

「人それぞれだから自分で考えろ」的な質問が最近多い気がする

794 = :

>>766
ES6のWeakMapを使えば外部からアクセスできないインスタンスごとの値を持てる
ただのMapだとメモリリークになるから注意
var Person = (function () {
var mName = new WeakMap;
function Person(name) {mName.set(this, name);}
Person.prototype.getName = function () {return mName.get(this);};
return Person;
})();

var p1 = new Person('hoge');
var p2 = new Person('fuga');
[p1.getName(), p2.getName()].toString(); // "hoge,fuga"

クロージャによる擬似プライベート変数は古くから言われているが
http://javascript.crockford.com/private.html
インスタンスごとにメソッドも生成することになってメモリ使用量が増える

結局_を付けるとか命名規則で対処するのが一番手っ取り早い

795 = :

> インスタンスごとにメソッドも生成することになってメモリ使用量が増える
具体的にどれくらい増えますか?

796 = :

>>794
ES6なら出来るんですね
現時点だと
コンストラクタの中でPrivileged methodを作るクロックフォードのやり方か
命名規則か
という判断になりそうですね
ありがとうございました

797 = :

>>794
ES6のWeakMapってそれ想定して提案してるんならすげーださくね?
別に>>794ディスってるわけじゃなくES6のドラフト検討してるやつに対してな。

いまさら、MapとSetを仕様に入れるとかいってるが10年遅いんだよw
Objectと純粋なMapを分離する仕様さっさとぶち込めばよかったのによ。。。

あと、ES5のセッターゲッターってJSの言語仕様と親和性高くなさそうでうれしくなかった。
それなら、__watch__実装しろって思ったね
仮にセッターゲッター入れるならインデクサもついでに入れれば言語仕様として綺麗になった(Array.prototype.lengthとか)のにほんと頭のいいアホどもだとおもうよ。

798 = :

>>797
役に立たない言語理想論よりも
現実重視なんだよ。
そこまで考え付かないの?

799 = :

クロージャを使う方法だと、
プライベートメンバにアクセスするメソッドをすべてインスタンスメソッドにしないといけないんですね
ゲートウェイとなるインスタンスメソッドを一つ作るだけで出来るかと思っていたのですが
それだとプライベートにならないので。
そうするとプライベートメンバを作るために別種の醜さを導入することになると思いますし
やはり命名規則法が妥当ということになると思います
ありがとうございました

800 = :

function Hoge(){
var private = {
hoge: 100
};
this.getPrivate = function (){
return private;
};
}

中庸的な方法だとこういう方法もありますね
getPrivateを使ってアクセスする奴はおらんやろということで。
でも_に直アクセスする人も普通はいないんですよね


←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について