一覧
プロパティとオブジェクトの関係
オレのためのJavaScript入門、その1
next : 代入式の中で何が起こっているか | back : オレのためのJavaScript入門
まず以下にサンプルコードを挙げる(一部)。 ry)... 桃月学園.レベッカ宮本 = new Object(); 桃月学園.レベッカ宮本.通称 = 'ベッキー'; 桃月学園.レベッカ宮本.特徴 = new Array('天才', 'ハーフ'); ...(ry
ここではグローバルオブジェクト桃月学園のレベッカ宮本プロパティにオブジェクトを定義している。
具体的な例を挙げよう。上のサンプルコードにおいて、レベッカ宮本プロパティの指すオブジェクトにJavaScriptが「オブジェクト一号」という名前をつけたとする。その後片桐姫子プロパティや橘怜プロパティにオブジェクトを定義していくと、それぞれに内部では「二号」「三号」という名前がつけられるだろう。こうなると問題が出てくる。鈴木さやかのオブジェクトを定義する番になったときそれがたまたま6番目なら良いが、そうでなかった場合にはなにがなんだかわからなくなってしまう。(意味がわからない人はこの段落は読み飛ばしてください) ry)... 桃月学園.柏木優奈 = 桃月学園.柏木優麻; 桃月学園.柏木優奈.通称 = '優奈ちゃん'; ...(ry
ここでは柏木優奈プロパティにオブジェクトを定義している。その際に彼女の双子の姉である柏木優麻プロパティの値を代入演算子=で柏木優奈プロパティに代入することによって柏木優麻プロパティに柏木優奈プロパティが参照するオブジェクトをコピーして、その後二人の異なるプロパティだけを書き換えようとしている。しかしこれは意図通りの結果にはなってくれない。この処理で柏木優奈プロパティに代入されるのは柏木優麻プロパティにオブジェクトを定義したときに作られたそのオブジェクトのJavaScript内部における保存先の名前なのである。つまりJavaScriptはプロパティ柏木優奈とプロパティ柏木優麻において同じオブジェクトを参照する。そして次の行で通称プロパティが代入されるオブジェクトは柏木優麻プロパティを定義したときに作られたオブジェクトの通称プロパティになる。これでは柏木優奈のオブジェクトを定義したことにはならない。
まとめてみる。 さて次回は、この問題が起こる根本的な原因を考えてみる(予定)。
関連リンク PR
JavaScriptのシェル、らしきもの(JavaScript Shel) JavaScriptでちょっとした実験や簡単なテストをしたい、なんてとき、いちいち外部JavaScriptファイルを読み込むHTML組んでテストスクリプト書いてwindow.alert()とかさせるのがメンドくさーい。ので、ブラウザにシェルっぽい動作をさせるスクリプトを書いてみた。 もうひとつはJavaScriptファイル。ファイル名'jsPlus.js'で上のHTMLと同じフォルダに。文字コードは同じくUTF-8。(簡単な文字列操作の関数やらが入ってます。詳しくはソース内のコメントに) ひとつめのHTMLをブラウザで開くとシェル起動。<textarea>にJavaScriptのコード入力してsubmitボタンをー、なんてことは書くまでもないな。 サバに上げてみた。jsShel.html。 (追記)いろいろと意図しない挙動をするのでサバに上げてある分については随時更新。ただこの記事のソースは自戒の意も込め更新はしないつもり。ある程度カタチになったらまた新たな記事を書く予定。 外部JavaScriptファイルの選択読み込みHTMLを読み込むたびに異なるJavaSciptファイルを読み込ませる方法を考えてみた。Cookieに読み込みファイルを指定してリロード、みたいな使い方を想定。で、作ったスクリプトが以下。(一部。HTMLファイルのヘッダ部分) ページを読み込む度に3つの外部JavaScriptファイルのどれかをランダムで読み込む、というばかばかしくも微笑ましいスクリプトなんだけど(いや、これ自体すでに反則くさいのだけれど。JavaScriptからscriptタグを書くちうのは実際のところ、どうなん?)、Firefoxでなんだかヘンテコリンな挙動(IEとOperaでは意図通りに動いた。こういうときにひとりだけおかしな動きをして私を困惑させるのは大抵IEなんだけどねぇ、ははは)。あれこれ手を尽くしてやっとこさ解決。解決版スクリプトは以下。 要するにFirefoxでは、スクリプト中文字列リテラル内のスクリプト閉じタグをHTMLが食っちゃった、ということでした。Forefoxから「ページのソースを表示」すればブラウザが食うタグは色分けされるのですぐわかることだったんだが、なかなかそこにたどり着けずけっこうてこずりました。 この処理にCookieを組み合わせることで複数のスクリプトファイルのうち必要なものを選択して読み込ませようと目論んでいるのだが、この処理を使ってページを作るとブラウザの「戻る」ボタンとの相性がものすごく悪くなるんよね。 あけましておめでとうございます 月日が経つのが早く感じられるのは最近ますますモノ忘れがひどくなってきたような気がすることと関係あるのかも。ないのかも。でも時の感じかたが若い頃と変わったのかどうかはよくわからない。なぜなら若い頃のことなんて、すでに忘れてしまったからー。 とりあえず今年一発目の目標、「大晦日から正月3日までお金を一銭も使わない」、は無事達成。微妙な達成感を肴に安酒をちびり。とかなんとか。正月からみみっちいことゆーな。 30日はそれなりにお掃除なんかして、31日はおそばを食べて。正月気分を盛り上げたところで、元旦にはお雑煮食って酒飲んで。でもおせちらしいものといえば田作りのようなものを作って(年越しそばのだしをとった残り)、あとはかまぼこ(すんごくやっすいヤツ)食ったくらい。 ペイン太君 あれこれとソフトを使い分けて描くのもまあ楽しいっちゃ楽しいのだけど、面倒臭いし、なにより時間が掛かるのが問題。だもんで今回はタブレットに付属のPainter Classic一本で描いてみることに。 とりあえず編集中の画面を上げてみる。(原寸、256色に減色) 続き 続き。 見せ方とかももうちょっとなんとかしたいのだけど、なかなかいい知恵出ないのよ。とりあえず記事自体を増やしてからいろいろ試しつつ、みたいな予定で。 こんなんやってる ダウンロードしたペイントソフトのテストも兼ねて、最近こんなんやっとります。 忍者ブログ [PR]
|
Since 2005 (C) hya All Rights Reserved.