アプリ版:「スタンプのみでお礼する」機能のリリースについて

たとえばイベントハンドラーなどで、
onClick="alert('test')"
などと書くと思いますが、このalert()は、JavaScriptの関数であるにもかかわらず、なぜスクリプトタグ外に記載されていても動作するのでしょうか。

A 回答 (3件)

>>このalert()は、JavaScriptの関数であるにもかかわらず、なぜスクリプトタグ外に記載されていても動作するのでしょうか。



私も、JavaScriptを記述するとき、「なんでこんなのが動作するの?」と疑問に思っていました。
「JavaScriptは、JavaやC++などのオブジェクト指向言語よりも低機能のスクリプト言語」と思っていたのですが、実際には、”伝統的な(古い!)オブジェクト指向プログラミング”よりも進んだ”メタプログラミング”の考え方が入っているようです。
メタプログラミングとは、実行時にプログラムの解釈(コンパイル)をするだけでなく、プログラム自体を生成&解釈&実行するような機能のことを言うようです(もっと違う意味を表すこともあるようですが・・・)

なので、JavaScriptのタグ外にある"alert('test')"も、HTML DOMとJavaScript DOMが協力して、この文を実行時に解析し、実行しているってことのようです。

P.S.
どうもプログラミング言語の世界では、OOP(オブジェクト指向プログラミング)ってのは、ちょっと古い考え方になっているようです。”まず、何をクラスにすればいいか?それが問題だ!”的な考えの時代があったのですが、現在は、「クラスなんて無くてもいいじゃん!手早く問題を解決できる方法があれば、それを使えば良い」って考え方になっているように思います。

JavaScriptやRubyは、そういう方向で流れているようですし、C#もそういう方向で進化しているといいます。
オブジェクト指向プログラミングよりも新しい概念のメタプログラミングを学ぶ必要があるようです。
    • good
    • 0
この回答へのお礼

メタプログラミングというのが、謎をとく鍵の1つということはわかりましたが、正直その内容や今回との関連はいまいち不明です・・・。ですが、ありがとうございます。

お礼日時:2013/09/15 20:18

onclick=" この部分 " は、スクリプトを書く場所です。


<script>この部分</script>も、スクリプトを書く場所です。

スクリプトを書く場所に書いた内容は、すべてスクリプトと見なされます。
    • good
    • 0
この回答へのお礼

イベントハンドラーのあとに書く部分はスクリプトを書く場所であると、これはHTMLの仕様ということですかね、決まっているということですね。ありがとうございます。

お礼日時:2013/09/15 20:14

それの正体はJavaScriptの関数だからです。



element.onclick = function (event) {
alert('test');
};

それから、JavaScript と HTML は互いに協力し合っています。
だから、このようなことができます。
    • good
    • 0
この回答へのお礼

お互いに協力してくれるというのは、なんとなくはわかりますが、もう少し詳細に教えていただくとありがたいですが、まずはありがとうござます。

お礼日時:2013/09/15 20:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!