• ベストアンサー

Javascriptの最新構文の書籍

昔、ブラウザ間の違いで互換性がなかったため、Javascriptを使わずにいましたが、最近になって使う必要が出てきたため、最新のJavascript構文や実践集などかかれた書籍を探しております。 昔、予約語になかったconstなど、今のJavascript(バージョンは何かな?)があったりと、進化していて驚きです。 PS オブジェクトにメソッドなど追加などできるのでしょうか? constで定義したものを再度上書きしてもエラーにならず値を保ったままにしている動作はそれで正しいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

多分現在の最新バージョンはjavascript1.5 だと思いますが、 javascript1.5 の本って見掛けないですね。 Firefox が1.5対応しているので http://web.archive.org/web/20040720040340/devedge.netscape.com/library/manuals/2000/javascript/1.5/guide/ http://web.archive.org/web/20040717071001/devedge.netscape.com/library/manuals/2000/javascript/1.5/reference/ http://www.mozilla-japan.org/js/js15.html なんかが参考になると思います。 >オブジェクトにメソッドなど追加などできるのでしょうか? 1.5でなくてもできます。 >constで定義したものを再度上書きしてもエラーにならず値を保ったままにしている動作はそれで正しいでしょうか? const C10 = 10; C10=255; のような場合を仰っているのだろうと思いますが Firefox で試してみたところではエラーにはなりませんでした。 ただし、C10 は、10 で値は変化しないので、それで正しいのだろうと思います。 前述のURLの説明でもreadonly であって、const で定義した名前に再度代入しようとした時エラーになるかどうかについては書いてありません。 ただし、 const C10 = 10; var C10 = 10; のような場合はエラーになるとあって、実際エラーになります。

その他の回答 (1)

  • Chaire
  • ベストアンサー率60% (79/130)
回答No.2

JavaScript 1.1 を開発した Netscape は ECMA に JavaScript の標準化を要請。紆余曲折を経て 1999 年 12 月に ECMAScript 3rd Edition(ECMA-262, 3rd ed.)が発表。以後の JavaScript エンジンは、基本的にはこの標準に従っています。 http://www.ecma-international.org/publications/standards/Ecma-262.htm http://www2u.biglobe.ne.jp/%7Eoz-07ams/prog/ecma262r3/ JavaScript の開発は現在 Mozilla 開発チームが受け継いでおり、Firefox 1.5 には JavaScript 1.6,Firefox 2.0 には JavaScript 1.7 が搭載されています(Opera も部分的にサポート)。現在、ECMAScript 4th Edition および JavaScript 2.0 が草案段階です。一方、Microsoft も JScript.NET(JScript 7.0+)において、ECMA-262 に従いつつもさまざまな用途に耐えうる固有の拡張を施しています。 ですから、本当に最新の JavaScript を使いたければ JavaScript 2.0 や JScript.NET になりますが、クライアント側 JavaScript におけるブラウザの互換性が重要ならば、ECMA-262 の範囲内でコードを書くのが無難です。なお、ECMA-262 に const は存在しません。JavaScript 1.5、JScript.NET の固有の拡張です。 また、ブラウザ競争時代に最も頭を悩ませた、HTML オブジェクトをスクリプト言語で操作する仕組みの非互換性については、1998 年に W3C が DOM Level 1 という形で標準化しました。 http://www.w3.org/TR/REC-DOM-Level-1/ DOM は現在 Level 3 まで定義されており、Firefox、Opera は Level 2 全部と Level 3 の一部、Safari は Level 2 全部をだいたいサポートしています。ですから、これらのブラウザではほぼ共通のオブジェクトを使用できます。 http://www2u.biglobe.ne.jp/~oz-07ams/prog/dom-ref/object-index.html 一方、IE の DOM サポートは Level 1 にとどまり、今なお固有オブジェクトに頼らざるをえない現状があります。IE の固有オブジェクトが他ブラウザに輸入された例も少なくありませんが、なにぶん標準化されていないので動作がマチマチです。 http://msdn.microsoft.com/workshop/author/dhtml/reference/dhtml_reference_entry.asp 必要な書籍は用途によると思われますが、体系的な解説が必要なら O'Reilly の『JavaScript: The Definitive Guide, 4th Edition』をお勧めします(邦訳は第 3 版:JavaScript 1.2 までしか出ていないので注意)。DOM は XML との関係で語られることは多いものの、それ自体に関する書籍はほとんどありません(『DOM Scripting』という本が出ているようですが私は未読)。いわゆる Ajax 的なアプローチに関する参考書なら、比較的多いと思います。

関連するQ&A

  • javascript DOM

    javascript DOMについて DOMはドキュメントオブジェクトモデルの略だと思いますが、DOMそのものというのはブラウザ画面に映っているオブジェクトそのものという解釈で良いのでしょうか? というのもjavascriptには「document.write()」というメソッドがあると思いますがdocumentはブラウザ画面そのものを指していて、writeは書く。直訳するとブラウザ画面に書くになると思いますが DOMもdocumentはブラウザ画面、オブジェクトはブラウザに移っているオブジェクト(<input type="button">など)、モデルは良くわからないのですが HTMLの画面に映っているタグ自体はDOMと呼ぶのでしょうか?

  • 書籍 メタプログラミングRubyの中の一文

    上記書籍のP143の カレントクラスについて質問です。 上記書籍に、 【クラス定義のなかでは、カレントオブジェクトselfは定義されたクラスである】 という記述がありますが 例えば、以下のようなクラス定義あがあるとします。 class Test print self.class def self.method_01() print "メソッド01" end def method_02() return self end end クラス定義内に3箇所selfが存在しますが、 インスタンスメソッド の method_02()内のselfはnewメソッドによって 作成されたTestクラスのインスタンスの意味だと思います。 それより上の二つのselfは確かに定義中のカレントオブジェクト・・つまりTestクラス ですけれど、なぜ書籍では、クラス定義内でのselfという表現なのでしょうか? 個人的には、【クラス定義内で定義されるインスタンスメソッド内にあるselfを除くselfはカレントオブジェクトである】という風に、説明すべきだと思うのですが 何か私の解釈に誤りがあるのでしょうか?それとも、文面を気にしすぎなだけでしょうか? くだらない質問ですがご意見をおきかせください。

    • ベストアンサー
    • Ruby
  • JavaScriptの仕様(ECMA-262以外)

    JavaScriptの仕様について教えてください ■質問1 … 仕様の種類 ・JavaScriptの仕様は、以下3つから成立しているという認識で合っているでしょうか? 1.ECMA-262 2.DOM 3.各ブラウザ実装状況 ■質問2 … ナビゲーターオブジェクト仕様 ・ナビゲーターオブジェクトの仕様はどこにあるのでしょうか? ・ナビゲーターオブジェクト=ブラウザ? ・ナビゲーターオブジェクトは、DOMの一種? ■質問3 … 「W3C」「WHATWG」の違い ・DOM仕様はどこが定めているのでしょうか? W3C? ・HTMLはDOMの一種? ・MOZILLAで「HTML 仕様書での定義」をクリックすると、下記ページへ飛ぶのですが、このページは何ですか? ▽HTML Standard   http://www.whatwg.org/specs/web-apps/current-work/multipage/ ・ベース仕様を「W3C」が決めて、もう少し詳細を「WHATWG」が決めて、その上層のHTML5部分はまたどっか違う組織が仕様を定義している、という話なのでしょうか?

  • クラスの継承の仕方

    後学のため、JavaScriptについて勉強しています。 JavaScriptでもクラス(のようなもの)を定義してオブジェクトを作成できるようですが、サブクラスを定義する方法が分かりません。メソッドやコンストラクタはどのように継承すればよいのでしょうか。 お分かりの方おられましたら、ご教授のほどお願い致します。

  • JavaScript ミニゲーム作成中に・・・

    こんにちは。趣味でプログラミングをしているものです。 JavaScriptで1から25までの数字が 正方形を25個に分割した小さな正方形に ランダムに配置されたものをクリックしていく、 というミニゲームをオブジェクト指向っぽく作っているのですが、 わからないところが出てきましたので質問させていただきます。 まず、ゲームの内容について説明させていただきます。 (1) htmlにdivタグを記述してidを 'stage' とします。 (2) ゲームの初期設定、処理を担当するのはGAMEクラスのインスタンスです (3) GAMEクラスは 'stage'に 正方形を 5*5 = 25 個の小さな正方形に分割した FieldPartクラスのインスタンスを配置します。 これらのインスタンスをリストに格納しておきます。 FieldPartインスタンスの描画は小さな正方形を表す divタグをフィールドにもち、border を指定して 'stage' にappend して 小さな正方形の枠を描画します。 数字のピースを表すスーパークラスPieceを定義しておき さらにサブクラスを定義します   FieldPartインスタンス一個を丸々埋め尽くすLPiece, FieldPartインスタンス一個の 半分の面積の横長の部分を埋めるHtPiece FieldPartインスタンス一個の 半分の面積の縦長の部分を埋めるVtPiece,です。   HtPiece, VtPiece はどの一行あるいは一列をみても   各ひとつずつ配置されるようにします。 これらサブクラスの描画も createElementでdivを作成し、   FieldPartインスタンスのフィールドが保持するdivにappendします。 このappendを担当するPiece のサブクラスのメソッドは (各サブクラス).prototype.belongTo = fundtion( fieldpart ) { 以下省略 } と記述しました。 (4) Piece クラスの各サブクラスへの継承ですが 以下のサイトを参考にさせていただきました。 http://d.hatena.ne.jp/vividcode/20110316/1300269173   この中の Classical Pattern #5 を用いました。 そして (各サブクラス).prototype.belongTo = function( fieldpart ) { // } として定義しました。 (5) 実行してみると、LPiece はうまくappend できるようです。 HtPiece は div の height が少し大きめに描画されるようですが append できます。 これについてはまたあとで考えるとして 問題はVtPiece なのですが VtPiece の belongTo の実行になると IE は [オブジェクトは 'vtBelongTo' プロパティまたはメソッドをサポートしていません。] というエラーメッセージを表示します。 各サブクラスのPieceクラスからの継承の記述の順番はLPiece, HtPiece, VtPieceですが 何か関係があるのでしょうか? スペルミス等がない場合には [オブジェクトは 'vtBelongTo' プロパティまたはメソッドをサポートしていません。] というエラーメッセージが表示される原因としては どのようなものが考えられるのでしょうか? ご存知の方、教えていただけないでしょうか? よろしくお願いします。

  • オブジェクト指向プログラミングの多態性のメリット、目的は?

    オブジェクト指向プログラミングを学んでいます。 基本概念の多態性がどうも理解できません。 メリット、目的はなんなのでしょうか? 上位クラスを継承し、 その継承されたクラスのメソッドを上書きするということと何が違うのでしょうか? 学習の参考にしている書籍の中には ”多態性を使ったオブジェクト指向プログラミングの典型例”として、 異種リスト(=上位型に下位型を代入し、一族のオブジェクトを一括管理する)を紹介しています。 多態性はこのような使用のみを目的としているのでしょうか?

  • IEの互換表示モードについて

    タイトルの件質問させてください。 当方IEの互換表示に対する知識がない状態です。 http://support.microsoft.com/kb/2618122/ja 上記リンクから察するにIEの互換表示モードというのは、 HTMLタグや、CSSの見た目のみ旧バージョンのIEに対応するという感じでしょうか? たとえば、IE11を使っていてIE7向けのタグやCSSを表示させたい場合に使うのですか? IE11を使用していてIE7のブラウザを使用している場合を例として JavaScriptの表示にまったく関係のないものはIE11のオブジェクトが使われたりするのでしょうか? それとも、互換表示モードで動作しているIE7のJavaScriptオブジェクトが使われるのでしょうか? 一例としてXMLHttpRequestはIE10に対応という情報を見ても互換表示モードではどちらを見ればいいのかわからず、困っています。。。

  • EXCEL VBAヘルプの使い方

    EXCEL VBA初心者です。webのVBAの実例集などで勉強中なのですが、ヘルプの使い方で質問です。 たとえばFindのパラメータ Find(What,After,LookIn,LookAt,SearchOrder・・・) のLookIn,LookAtなどの意味を調べるにはどうしたらいいのでしょう? Findメソッドのヘルプを見ながら オブジェクトブラウザでXlFindLookInクラスは見つけられても、右クリックでもう一度ヘルプを見ようとすると ”ヘルプ ファイルは使えません”と出ます。何かインストールが足りないのでしょうか? 皆さんはVBAのメソッドの構文がわからない時などどのようにヘルプを使われているのでしょう?宜しくお願い致します。

  • Javascript の .send で POST できません。

    こんにちは。 Javascriptで[aaa=bbb&ccc=ddd]というデータをPOSTしてみたいと思って以下のコードを書いてみたのですが、うまく動作しません。 どこが間違っているのでしょうか? コメントもツッコミどころがあるかもしれませんが、ご指摘よろしくお願いいたします。 <html> <head> <script type="text/javascript"> <!-- var gActiveXObj = ""; function GetActiveXObject() {     if(window.ActiveXObject)     {         try//IEのActiveXObject         {             gActiveXObj = new ActiveXObject("Msxml2.XMLHTTP");         }catch(exception){//IEの古いバージョン             try             {                 gActiveXObj = new ActiveXObject("Microsoft.XMLHTTP");             }catch(exception2){                 return null;             }         }     } } function PostData() {     if(!gActiveXObj)     {         GetActiveXObject();         if(!gActiveXObj)         {             alert('ご利用のブラウザではActiveXオブジェクトが取得できません。IEを使ってみて下さい');             return null;             }     }     gActiveXObj.open('POST','test.php',true);//まだソケットはオープンしてない。メンバの設定してるだけ。     //パラメータは左から、メソッド、ファイル名、非同期通信を有効にするかどうか。          gActiveXObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");//ヘッダを設定     gActiveXObj.send( "aaa=bbb&ccc=ddd" );     if(gActiveXObj.status == 200)     {         //サーバから受信完了:readyState = 4 メソッドの成功 : status = 200         alert('POST成功');     }else{         alert('readyState: + 'gActiveXObj.readyState);         alert('status:' + gActiveXObj.status);     } } // --> </script> </head> <body> <a href="javascript:PostData()">実験</a> </body> </html>

  • if(document.all && navigator.appVersion.indexOf('Mac')!=-1)returnの意味

    よろしくお願いします。 JavaScriptの勉強をしているのですが、参考にしている書籍に以下の構文が出てきまして、それの意味が分からなくて悩んでいます。 //MacIE4,5バグ 回避 if(document.all && navigator.appVersion.indexOf('Mac')!=-1)return //以降に記してあるとおり、OSがMacintoshだった場合に何らかの処置を行うプログラムなのは分かるのですが・・。 navigator.appVersion.indexOf('Mac')!=-1の部分は、「navigator.appVersion.indexOf('Mac')が1ではなかったら、Macユーザーであるということ、で、falseが返されるのでしょうか? しかし、そもそもnavigatorオブジェクトはブラウザの種類のことではないのか?と混乱してしまっています。 また、document.allがどのような役割を果たしているのかも分かりません。なぜここでdocument.allが出てくるのでしょうか? どなたか分かる方いらっしゃいましたら、ご教授宜しくお願いします。

専門家に質問してみよう