--/--/--(--)


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
コメント(-) | トラックバック(-) | --:--:--

2010/05/15(土)


JavaScriptにはクラスの概念がなく、C++やJavaのような言語に慣れた人にとってはその言語仕様の違いに戸惑う方も多いと思います。prototype.jsのClass.createは、この問題を少しだけ解決してくれます。

細かい仕様の話はともかく、手っ取り早くC++やJavaのように記述できないかと模索している方はこちらをご覧ください。

.htmlファイル
<script type="text/JavaScript">
var sample = new SampleClass(1,"test");
sample.firstMethod("test");
sample.lastMethod();
</script>

.jsファイル
// prototype.jsのClassオブジェクトの部分を抜粋
var Class = {
 create: function(){
  return function(){
   this.initialize.apply(this,arguments);
  }
 }
}
 
var SampleClass = Class.create();
SampleClass.prototype = {
 val1: 1,
 val2: "test",
 
 // コンストラクタ
 initialize: function(r_val1,r_val2){
  this.val1 = r_val1;
  this.val2 = r_val2;
 },
 
 // メソッド
 firstMethod: function(r_val1){
  this.val2 = r_val1;
 },
 
 // 最後のメソッド
 lastMethod: function(){
 }
};

注意点としては、最後のメソッドのみ括弧を閉じた後にカンマがいらないことです。

コメント(2) | トラックバック(0) | 18:06:49
コメントを書く

管理者にだけ表示を許可する

pirce #mQop/nM.  2010/08/12 | [ 編集 ]

はじめまして。
@ITデビューおめでとうございます。
これからの記事を楽しみにしています。
さて、ブログ記事で気になることがあったので投稿します。
記事に載ってるJavaScriptですが、実行できませんが、どのような環境で試されたんでしょうか?

オブジェクト指向チックということなんで
val1: 1,
val2: "test",

Java っぽく、val1, val2 が private ですよ、って
やりたいなら、以下のように書いた方がいいかも。

return this ってなんじゃこりゃ?って気もするけど;
<script>

var SampleClass = function(a,b) {
var myA = a;
var myB = b;

this.getA = function() { return myA; };
this.getB = function() { return myB; };

return this;
};

var sc = new SampleClass("OK","NG");

alert("sc.myB = " + sc.myB);
alert("sc.getB() = " + sc.getB());

alert(SampleClass("Hello World !!", "hava a nice day").getA());
</script>

玄米茶 #-  2010/08/13 | [ 編集 ]

どうもはじめまして、pirce さん。
コメントありがとうございます。

これ、prototype.jsが必要でした。
というか、prototype.jsのClass.createの紹介記事なだけでしたね……。

var Class = {
create: function() {
return function() {
this.initialize.apply(this, arguments);
}
}
}

要するにクラスっぽいものがあれば安心だよねー、って言いたかっただけなんです。
近日中に記事内容改めます。
ご指摘ありがとうございました。

トラックバック:0 - http://genmaicha460.blog27.fc2.com/tb.php/11-fba65af7

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。