トップページ⇒tech
175コメント68KB

JavaScript JScriptってどうよ

■ このスレッドは過去ログ倉庫に格納されています
0001Mr. JNGNG
ここでこっちへ逝くよう言われたのでこっちへ来てみました。
http://pc.2ch.net/test/read.cgi/win/1021566844/l50
JScript.Netなんてのもありますよね。
JScriptはブラウザのあるところならどこにでもあるので軽く知ってお
くと便利な気もするんですけど。


↓Windows スクリプト テクノロジのヘルプから引用

JScript
インターネット向けに特別に開発された Microsoft の強力な
スクリプト言語です。JScript.NET は Microsoft の ECMA
262 規格に準拠した次世代の言語です。ECMAScript Edition
4 と併せて現在開発が進められている JScript.NET では、完
全コンパイル済みコード、型付き変数および型なし変数、クラ
ス (継承、関数のオーバーロード、プロパティ アクセサなど)、
パッケージ、クロス言語のサポート、.NET Frameworks へのア
クセスなど、さまざまな改良が組み込まれています。


JavaScript関係の勉強ができる所
ttp://member.nifty.ne.jp/aya/
ttp://www.tokumaru.org/JavaScript/index.htm

Script Encoderの落とせる所
http://msdn.microsoft.com/downloads/default.asp?URL=/downloads/sample.asp?url=/msdn-files/027/001/789/msdncompositedoc.xml

Script Decoderの落とせる所(使ったことないです)
http://www.astalavista.com/hacking/win/scrdec.shtml
0153デフォルトの名無しさんNGNG
>>152
チミは150を読んだのか?脊髄反射書込みするなよ。
0154デフォルトの名無しさんNGNG
じゃあageんなボケ。
0155デフォルトの名無しさんNGNG
152は150に該当するような話じゃないんじゃ
0156デフォルトの名無しさんNGNG
>>152
参照渡しじゃないよ。値渡し。
alias が持っている Array への参照が arg にコピーされるだけ。
0157デフォルトの名無しさんNGNG
>>152
ちゃんと参照渡しになっていますよ。
(arg == alias) // true
しかし、あなたのコードでは、参照という値を上書きしているだけです。
そのため、外部に何も影響を与えません。
参照で元の値を変更するならば、
arg.push(...) や arg.length = 0 などのようにしなければいけません。
0158デフォルトの名無しさんNGNG
>>155
結果的に参照が渡されるんだけどね。
0159デフォルトの名無しさんNGNG
>>157
ありがとうございました。

changeMessageArray(alias);
 or
changeMessageArray(objHello.msgArray);

と書いても、JavaScript だと objHello.msgArray は変わらないんですね。
Cとかやってると、このへんの仕様に悩まされます。
仕方が無いから、 changeMessageArray の最後に return arg; をつけて、

objHello.msgArray = changeMessageArray(objHello.msgArray);
alias = objHello.msgArray;

みたいな書き方をすることしました。
0160デフォルトの名無しさんNGNG
arg.length = 0;
arg[0] = "こんにちは";arg[1] = "ご機嫌いかがですか";
とかどうよ?
0161デフォルトの名無しさんNGNG
>>160
あ、その方法でもいけますね。
そっちのほうが、スマートにまとまりそうなので、そちらを使用します。
ありがとうございました。
0162デフォルトの名無しさんNGNG
ちょっと古いですが

>>128

> var value = new Hoge( 10, 20 );
> value のローカル変数は、value 自体がスコープを抜けて
> クリアされるまで保持されるはず、と考えてるんだけど。

valueのローカル変数というのはHoge関数のローカル変数だと思いますが。
そのローカル変数はvalueのプロパティなのではなく
むしろvalueのメソッド(となっているインライン関数)に属しているのだと思います。
つまり、Hoge()内でメソッドがインライン関数として定義されているため、
Hoge実行時の状況(ローカル変数や引数)がHoge関数を抜けてからも
メソッドから見える状態になってるんだと思います。

>>136
厨房もじらーさんは関数スコープで考えていいと思います。
関数内関数の事を知れば解決すると思います。
「kia's website」 (J(ava)Scriptメモ -> JavaScriptでクロージャ)
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/5042/
0163デフォルトの名無しさんNGNG
>>159
>Cとかやってると、このへんの仕様に悩まされます。

void f(int* a)
{
a = new int[1];
a[0] = 9;
}

void main()
{
int int_array[] = {1, 2, 3, 4, 5};
f(int_array);
// 多分int_arrayはそのまま
}

Cでも同じじゃないでしょうか。
0164デフォルトの名無しさんNGNG
new は無いんだった。
0165ELNGNG
age ついでにちょっと思いついたこと。
関数の完全なクローンを作成します。
継承にも使えます。

var inheritance = function cloning_function( newfuncname, basefuncname )
{
 var regexp = new RegExp( basefuncname );
 var funcvalue = new String();
 var exe = new String();

 eval( exe.concat("funcvalue = ",basefuncname,".toString();") );
 funcvalue = funcvalue.replace( regexp, "" );
 eval( exe.concat(newfuncname," = ",funcvalue) );
 
 exe = exe.concat( "for( var key in ", basefuncname, ".prototype )\n{\n" );
 exe = exe.concat( "\t", newfuncname,".prototype[key] = " );
 exe = exe.concat( basefuncname, ".prototype[key];\n", "}" );
 eval( exe );

 return newfuncname;
}

一応、JScript5.5 で動作確認しました。
0166ELNGNG
>>165
return newfuncname; は余計だった。
0167デフォルトの名無しさんNGNG
ふと思ったが、Java質問スレからこのスレにはリンク張られてないんだな。
0168デフォルトの名無しさんNGNG
>ふと思ったが、Java質問スレからこのスレにはリンク張られてないんだな。

            笑 え な い 発 言 で す
0169167NGNG
え、Javascriptの質問はWeb制作板へってのの話なんだけど。
0170167NGNG
あ、169の文がJavaスレの1に書いてあるのよ。で、みごとに
このスレむしされているなぁと。
0171デフォルトの名無しさんNGNG
だから?
0172デフォルトの名無しさんNGNG
http://www.suntory.co.jp/softdrink/dakara/
0173デフォルトの名無しさんNGNG
JavaScriptスレなんてあったんだ。って、JavaScriptスレだと
おもっていいよね。JScriptってよくしらんし。

なるべく JavaScriptには近寄らないようにしようと生きてきたんだけど、
最近仕事で使うので仕方なく ECMA262と O'Reillyのやつを読んでみた。
読んでみるとなかなか面白い言語であるな。
closureがあったり scope chainがあったり prototypeだったり。
そのくせ constructorなんてあって Java (C++?) への未練が断ち切れて
なかったり。好事家としての言語屋の知識欲をそそる仕様みたいだ。
でもやっぱりこんなのでコード書きたくないけどなあ。
0174デフォルトの名無しさんNGNG
>>173
>Java (C++?) への未練が
まぁ、JavaScriptの歴史から調べてみては?
0175デフォルトの名無しさんNGNG
『JavaScript 2 Black Book』
著者: Scott Duffy
出版予定: 2002年 12月
ttp://www.amazon.co.jp/exec/obidos/ASIN/1588803074/

JavaScript 2.0 と EMCAScript 4 についても書かれてるみたいですが、
12月までにEMCAScript 4が出るって事なのかな?
■ このスレッドは過去ログ倉庫に格納されています