1224170 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

不思議な物ショップ

不思議な物ショップ

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

Freepage List

Comments

白鷹3@ Re[1]:Echo Show 5 その2 通話ができない(11/29) nackさんへ ほんと、早く対応してほしいも…
nack@ Re:Echo Show 5 その2 通話ができない(11/29) 自分も同じような状況です。昨日は追加で…
Daizo@ Re[1]:3Dプリンタのスライサ自動化(08/24) 白鷹3さん >スライス設定の煩わしさがな…
白鷹3@ Re:3Dプリンタのスライサ自動化(08/24) スライス設定の煩わしさがなくなるのは楽…
Daizo@ 3Dプリンタのスライサ自動化 初めまして、3Dプリンタクラウドプラット…

Keyword Search

▼キーワード検索

Category

Recent Posts

Archives

Free Space

私の工房(類似品を含む)
3Dプリンタ「CUBIS」
切削RP「MDX-20」
フライスマシン旋盤
ミニルーター
プロクソン製です。安物は役に立たず、こちらに買い換えました。
バンドソー
2007.10.13
XML
カテゴリ:WEB開発
Javascriptを勉強しています。
変数が定義されているかは、
if(typeof a[1] == 'undefined')
のように、型を調べると良いようです。
また、プロパティであれば、
if("a" in this)
のようにすると良いようです。
if(this.hasOwnProperty("a"))
という方法もあるようですが、IEでは、注意が必要のようで、thisの部分が、クラスでなければ、エラーになるようです。

プロパティに関しては、
var Animal = function(name, sex) {
this.name = name;
this.sex = sex;
}
のように、クラス定義時に宣言する方法と、後で、prototypeを使って、追加する方法があるようです。
また、面白いのは、インスタンスに対して追加することができ、
var Animal = function(name, sex) {
this.name = name;
this.sex = sex;
}
var anim = new Animal("トクジロウ", "オス");
anim.toString = function() {
window.alert(this.name + " " + this.sex);
};
anim.toString(); // 「トクジロウ オス」
とすることができるようです。
ただし、別のインスタンスには、追加されたメンバはないことに注意が必要です。

このように、同じオブジェクトであっても、インスタンスのメンバ(プロパティ)が異なることがあるため、先に挙げた変数が定義されているかを調べることが重要になってきます。
evalによって、動的にオブジェクトの宣言が可能であることからも、この点が重要になります。


Javaを参考にしながら、C#とJavascriptは、別の方向に進んでいるように思いました。もっとも、用途が異なるため、当然といえば、そうですが。
思想的に、前者は、フレームワークで実現してきたことを、言語仕様に取り込んでいくのに対して、後者は、同じような機能は統一して、言語仕様自体は簡素に徹しようとしているように思います。


参考
第4回 JavaScriptでオブジェクト指向プログラミング





お気に入りの記事を「いいね!」で応援しよう

Last updated  2007.10.13 21:37:01
コメント(0) | コメントを書く
[WEB開発] カテゴリの最新記事



© Rakuten Group, Inc.