>>すべての権利なので、今日は、 私が話をするつもりだ
JavaScriptの約、どのようにだ 他の言語とは異なる
あなたは可能性があること PHPを好きに使用される。
というように、最後の講義中 月曜日、私たちは少し話
似ているかについて、何 JavaScriptの間でおなじみの
PHPやPythonやRubyと またはCまたは他の言語
あなたは既にしていることを に精通。
しかし、JavaScriptを実際に 本当にユニークなテイクを持っている
となるオブジェクトモデルに その種の全く異なる
そのほとんどの言語よりも あなたが対処するつもりだ。
だから、関数は、ソートされ
過小評価の JavaScriptでコンセプト。
彼らは道よりも強力である 彼らは他の言語である
彼らがすることができますので、 中 - 1の理​​由で、
彼らはなることができるしている 値として設定。
だから、右ここでは、持っている のvar xは、関数に等しい
それは最初のクラスの 渡すことができる値
引数として周り。
だから、あなたがする必要はありません 関数xを宣言する
ちょうどそのスコープでXを使用しています。
あなたは、xの値を渡すことができます どこを通して、あなたが知っている、
への引数として 別の関数
あなたが輸出をモジュールできる場所 ダビデは、ノードで述べたように。
ので、次の点である
関数であること JavaScriptでのオブジェクト。
だから、実際に設定することができます 値などのプロパティ
機能にだけ治療 それは、オブジェクトのが好きです。
だから、あなたが作業しているとき jQueryの、あなたが知っている、そのドル
そして、あなたは合格 そこにセレクタ
関数として呼び出します。
しかし、あなたも ドルは、AJAXに点在している。
そして、それはしない種のない あなたが考える場合には意味をなさ
ただ人間としての機能 あなたが呼び出すことができるもの
またはお電話。
しかし、JavaScriptはあなたがすることができます 機能のプロパティを設定
静的プロパティとして ちょうどXドットsomePropと
私はそこに指摘したように。
我々はしている次のポイント もう少し入るつもり
深さということである 関数は、治療することができる
JavaScriptでクラスなど。
だから、コンセプトがあります この新しい演算子の
これの新しいインスタンスを作成 ソートと一緒に機能
のクラスのような体のような それに伴って到来する
そして私達は行くつもりです そこにもう少し、
それはプロトタイプと呼ばれています。
そして、それはのmake何だ 非常にユニークなJavaScriptの比較した
他の言語へ どのクラスに基づいており、
JavaScriptはベースのプロトタイプです。
そして、ちょうどで そこの底、
機能だけで呼び出すことができます 端的に我々が慣れているよう。
だから、新しい何もない。
独特のもう一つは、ある
配列は、実際にしていること オブジェクト。
彼らはPHPである苦手な方
あなただけの作成場所 新しい配列。
これは実際に省略形です 新しいアレイを言うため。
ANDアレイは、実際には オブジェクトのサブクラス。
だから何か 違うと私は行くよ
もう少しへ その上で詳しく説明します。
およびデバッグ機能
JavaScriptで実際にある 比類のない限り、私が見てきたよう。
これはスクリーンショットです クロームインスペクタ
我々はするつもりだこれ 残りの使用している
プレゼンテーションの今日。
とするだけで、これへの行き方 開発者ツールをファイルに移動
オープンクロームインスペクタ または、右クリックすることができます
およびshow要素Iをクリック それは、HTMLページ上だと思う
または私はそれがコマンドだと思う オプションJは、これを開きます。
しかし、我々は、この中に移動し、よ 実際にブレークポイントを設定することができます
あなたはを通して実行しているように JavaScriptコードとソート
どのような局所的に評価 変数がどのような値であり、
この件であり、それはそれを作る デバッグコードへの道が容易になります。
そしてドント - これはありません ブラウザ側のコードに拘束
しかし、あなたが実際にすることができ インスタンスを実行
このクロームインスペクタ サービス側のコードのための
あなたので、本当にきちんとしたです 一行ずつステップ実行することができます
要求には、に入ってくるように サーバと何が起こっているかを参照してください
と変数と遊ぶ ここにコンソールダウン中。
JavaScriptは、私が述べたように、 プロトタイプベース言語である
これは、セットがあることを意味 ソートされ、デフォルト値の
機能毎に隠されたの
オブジェクトドット内 prototypeプロパティ。
だから、ハッシュのようなものだ ただ異なるデフォルト値
そのあなたが起動するとき 新しいキーワードを持つ関数、
それらは次式で設定される 機能として、デフォルト
使用可能であること インスタンス上。
だから実際には は本当に効率的な -
それは効率的な方法です 賢明なオブジェクトのメモリを作成する
JavaScriptの理由 ランタイムのみを追跡することがあります
オブジェクトのプロトタイプの。
それは一種のそれを指す
あなたは新しいのcretaeとき クラスのインスタンス。
そして、あなたはまた模倣することができます 知られているように、継承
クラスベースの言語で あなたは、ソートがある場所
このようなことを拡張し、 あなたが模倣できることを拡張
JavaScriptでその と呼ばれるものを通じて
プロトタイプチェーン。
そして、我々は例が表示されます そのことについて。
だからあなたの場合 - jQueryのプラグイン 実際に彼らは、jQueryをお勧めします
ドルのドットを使用するには、著者 機能を追加するには、fn
jQueryライブラリへ。
そして、我々は実際にするつもりだ にジャンプ - ので、このページで、
私たちは、ドルを持っている - 私はjQueryを含んでいた。
そして、あなたは、ドルをすれば コンソールのドット
私が持っ述べている コマンドシフトからJ·ユー·アップ
あるいは単に閲覧しようとして、 開発者は、開発者ツール
そしてSources]タブに行く。
[聞こえない備考]
必ずああ。だから私は始めたとき 変数を入力するには、
それは私のために、自動完了だ そこに利用できるものです。
だから私は、ドルに入力したと私は、CAN 私はChromeは、いくつかを持っていると思います参照してください。
内蔵のドル、 ドルとドルのX。
だから、今私はちょうどたい ドルと私は、ドットに置く。
そしてそれは私を示しています すべてのプロパティ
使用可能であること jQueryオブジェクトに。
しかし、私はドルをすれば ドットプロトタイプ、
私は今、すべてのメソッドを参照してください。 私が使用して慣れていることを
私は、ドルを持っているとき、セレクタ そして私はとのことオフチェーン、
あなたが知っている、クラスを追加したり、追加 やぼかしなどのいずれか。
それらは、すべて実際に プロトタイプ
そのフードのjQueryの下に 自身の新しいインスタンスを作成
それは一種のすべての非表示 あなたからこれらの詳細。
私がいたので、ポイント こっち戻っ作る
機能と、それら 実際にあなたからのプロトタイプを隠す
そしてちょうどそれエイリアス ドルにFN点在しています。
だから、ほとんどの人が実際に 気付いていない
プロトタイプが存在することを フードthat's下 -
あなたがを活用できる​​ことと 機能を追加
各jQueryのインスタンスに よろしければ。
だから、「新しい」演算子である 本当に並べ替えが難しい
最初は理解する。
あなたは、関数を呼び出すとき 「新しい」と、
それは全く違う 関数を呼び出した方法
あなただけ呼ばれるかのように はっきりそれ。
だから、「新しい」演算子は、作成されます 新規インスタンスと呼ばれるもの
オブジェクトまたは新しいの あなたが考えることができるのインスタンス
クラスのオブジェクトの。
これは、値を発生したとき これのどの精通している可能性があり
jQueryのからして、 彼らは一種のこれを設定
便利なされているものに 当時。
それらは通常に設定する あなたがしている現在のDOMノード
あなたのような経由つもりだとして 各またはそのような何か。
彼ら - この値は、想定されている インスタンスの値であるために
あなたが "新しい"で作成した、 そのすべてが含まれています
プロトタイプチェーン上の、すべての あなたは見つけるだろう方法の
プロトタイププロパティとして。
だから、どのように依存するか 関数が呼び出され、
これは何の値です。
そして、それは本当に混乱だ あなたがJavaScriptに新しいしている場合。
と呼ばれていますが、すべての機能 います。 - 価値であります。
ですから、作成していない場合でも、 何かの新しいインスタンス、
これは想定されていること グローバルである。
または、関数を呼び出すことができます callメソッドを使用して
法を適用する場合、 JavaScriptで。
あなたが機能し、 これがどうあるべきかを指定します。
だから、それを動的にすることができ、 本当に強力である
だけでなく、あなたが行うことができます 誤解を招くことができること
とを混乱 他の開発者
彼らは実際に使用していないのであれば。
とjQuery、私が主張したい それがさらに混乱になり
それは便利なことで それを設定する
現在のDOMノードへ。
しかし、単純なルールが覚えておくべき これは何の価値がある
あなたが探しているとき
機能の呼び出しである ドットの残っているもの。
だから、オブジェクトがある場合
そしてそれは何かドットだ 何かが機能です
その後、呼び出していることを 最初の値がどのような値であり、
これである。
そこでここではコード例です
私が作成していますどこに リテラル新しいオブジェクト
これだけのオブジェクトである 中括弧を使用して作成
と私はボブに名前を設定してい
そして私はsayNameを持っている ここの方法 -
ので、このsayName内部 私はXドットsayNameをすれば、
この値は等しい xにあるため、左
ドットのxです。もしそうなら 私は、それがドットsayNameをX呼び出す
それはハローボブだと思います。
して、別の例
私は実際に割り当てるよどこ XドットsayName、機能
変数yに、 その私が述べたように
JavaScriptの使用中 機能を割り当てることができます。
あなたはいつでも変数に、 それは、そのように本当に柔軟だ
今私は、Yを呼び出すときに、 それは、xのコンテキストを失った。
だから、これは今や世界であるか、 strictモードにいる場合には、
私はそれがnullだと信じて または未定義。
しかし - だから、Yはあなたがしているものではありません あなたが探しているなら、ここで期待して
xで、あなたが行っている sayNameを呼び出すには、
あなたは、この名前を期待している ボブことになっている。
しかし、あなたはそれを引っ張っている場合 オブジェクトと呼ばれる
それ自体で、これが今や世界です。
そして、それは、私が言及したものだ あなたは、ドルが表示されたら、このドット
あなたは多くの場合、考えていない 何が実際に起こっている。
しかし、jQueryは一種の彼らがある 独自のドメイン固有言語
これに対処し、用 それはあなたが使用しているものではありません
JavaScriptでの。
そして私はこれを指摘する それは本当に重要ですので、
よく構造化された書き込み用 オブジェクト指向のコード
JavaScriptで実際に持っている 十分に理解し、把握
これがどのように動作するかの方法と、 オブジェクト·モデルの動作
とどのようにnew演算子は動作します。
そうしないと、終了します jQueryのスパゲッティで最大
すべてがソートです のあらゆる場所に
とだけ、DOMを扱う。
あなたが実際にできるかどうか JavaScriptを送る
より構造化された方法で、 それは非常に簡単になります
ソートする、で動作するように の懸念を分離
に対処する DOMを更新し、対処
実際のロジックとコード付き。
それでは、Aを見てみましょう その周りにいくつかの例。
だから私はここにいくつかの例があります。
だから、これは単純な例です JavaScriptオブジェクトを使用する
といくつかの機能を追加 それして、ソートを作成する
のミニチュアアプリケーションのように。
だから、実際には非常に簡単です。
それがない唯一のものです 最初は自分の名前を求めるプロンプトが表示されます。
だから私は、ティムを言うと、あなたよ ボブに自分の名前を変更することができます。
そして、それはすべてこれです アプリケーションが行います。
しかし、私は指摘したいと思います うちは、それをしない方法です。
だから私はこの名前ジェネレータを持っている startメソッドを持つオブジェクト
ユーザーに確認している 自分の名前のために
ちょうどこのaskForNameを呼び出すことにより、
その下に、ここで プロンプトを行います
名前が割り当てられなかった場合は、 それは再びそれを要求
このaskForNameを呼び出すことによって。
そして、それは名前を取得したら、 それは、この更新の名前をコールします。
だから、これはその後に設定 H1タグ内のユーザの名前。
そして名前がない場合には 設定は、エラーをスローします。
[聞こえない備考]
必ずああ。だから、設定します H1タグ内のユーザの名前
setDisplayNameを呼び出すことによって、 HTMLを設定している
JS名コンテナ内と 私は、HTMLのすべてを付けるよ
JSセレクタという理由だけで それは得るための良い習慣です
ただ作るために それはそう混乱しない
あなたが使用している場合 IDのやクラスなどのセレクタ
スタイルの両方のために、ロジック用
あなたのJavaScriptで フロントエンドアプリケーション。
あなたは別の持っている場合、以下の原因 働いている人のグループ
コー​​ドベースにして、 そこにセレクタを持っている
設計者が決定したことを it'sので変更します -
とてもよく似合うので、望んでいない 新しいクラスに入れて取る
出あなたとあなたが当社の強みです JavaScriptの目的のために、
そして、あなたのコードが中断されます。
それは、接頭辞と並べ替えることが良いことだ
のような名前空間のほとんど JavaScriptを関連クラス
または持つ属性 JSの接頭辞。
だから、これはかなりある シンプルであなたが見ることができる
私はこれらすべての場合において 呼び出しは、最後にこれを返す。
だから、これは良いです に入るために習慣、
あなたにそれを得た 有効な戻り値。
askForNameでは私はないよ それは理にかなっているので、
名前を取り戻すだろうと。
しかし、どのようなことができます もしその時は、
この更新プログラムを返した場合 名前、それは値を返すだ
setDisplayNameのである これの値を返す。
そして、それはあなたが並べ替えることができます あなたが使用しているようにチェーンの
返すことによって、jQueryの中に このたびの値。
これが指し 現在のオブジェクト
だから、このドットを呼び出すことができます askForNameドットsetDisplayName
そしてそれは続けるだろう この値と、あなたを許可する
そこに素敵なチェーンを持っている。
その中で - そして中 この第二の例。
[一時停止]
わかりました。
[OK]をクリックします。それでは、先に行ってみよう とコンソールを開く
そして私のSources]タブに移動します。
私たちは、実際にこれを飛び出します。
Chromeデベロッパーでそう 私が述べたツール、
この作品があります 右に -
あなたはこの一時停止の標識を見ることができます デフォルトではあるが、それは黒です。
しかし、ときにマウスカーソルを合わせると、 例外で一時停止しないでください」と言います。
一時停止をクリックしてください すべての例外。」
そして、あなたがそれをクリックすると、 もう一度、それは青に変わります。
そして今でもその スローされたエラーがあります
JavaScriptコードでは、よ 時点で停止し、あなたを許す
何が起こっているか評価する。
そう - そして、それは本当に便利です コンセプトは指摘しようとしている。
そして、あなたはクリックすると もう一度、それが紫色に変化
これは通常、 私はそれをインチ保つ
それだけで、コードを破る 例外がある場合
それがキャッチされていません。
そうするためのjQueryでの多くの時間 例えば、彼らはキャッチしてみます
か否かをテストするためのブラウザ 機能のいくつかの並べ替えを持っている
そこから続けている。
これは場合にのみです エラーがあります
それがされていない トライキャッチでキャッチ。
それでは、試してみて、提出してみましょう 空白になって名前。
だから私は見ることができます コー​​ドは現在停止している
updateName方法で と私はできる名前の上にマウス
それが空白に空です参照してください。
そこは空白に等しいです。
そうでなければ、新規をスロー名前 エラーと、今私は戻ってステップ実行することができます
スルー機能 コラムというと、「OK、
ここでは、「どこから来たと クライアントの値が何であるかを参照してください。
だから、askForNameメソッドを持っている
setDisplayNameスタート とupdateName。
そして、これは本当に便利です あなたはすべて持って見ることができる方法
使用可能な変数 そのスコープ内だけでなく、
クロージャ変数として、 クローズですので、何も
この機能によって引き継が。
だから私はそれを見ることができます - クライアントの値が何であるか
そしてこれは何の値です。
我々はしているので、この '原因 jQueryのに等しい。
現在のDOM要素に。
しかし、それは本当に便利です コー​​ドのデバッグ
このようなエラーで中断します。
のもう一つの特徴 クロムインスペクタで
そのことができます任意の時点で 別の行をクリックしてください
行のそれはよ 場所で休憩
あなたは、ブレークポイントを設定している場合、 それらはといいいます。
だから私はクリックすると、 ラインが​​青に変わります。
だから私は続けましょう ここで実行は、[OK]を、それが壊れた。
そして今度は、名前を設定しましょう アリスにして、Submitを押してください。
だから今私も見ることができます それがポイントになった前に、
すべてを更新するのでは、それは今だ 私が見ることができるので、ちょうどここに停止
私のこの名前はアリスであること そして、私は続けることができます -
私はページをリロードしてみましょう。
大丈夫なので、今はだと もう一度startから始まり、
それはこの時点で停止しました ラインと私は見ることができます
その名前は、現在、 未定義。
askForNameは、それを機能されている ですので、それは多くの場合にも便利です
あなたができる機能を持っている場合 異なるファイルからの
または異なる場所 コー​​ドそれがどこにあるか、あなたが見ることができる、
そしてそのにジャンプ、 それが強調表示されます。
習慣を身につけるためにとても良い デバッグツールを使用する
だけではないされていることを コンソールドットログ。
OK、それではいきましょう 第二の例を見て
これをより利用している 私が言及したようにしていたプロトタイプ。
したがって、この例では、
我々は新しいを作成している CSと呼ばれる関数
これは大文字で その大会の標準
JavaScriptであるかの 関数を使用することになっている
コンストラクタと、対照的に
ただ通常の状態に 機能、あなたはそれを大文字にします。
だから私は、資本CSとこれを持っている 変数courseIdを取る
とcourseTitleいる 私はこのcourseIdに設定され、
このcourseTitle コンストラクタで。
そして私は、学生を設定 空の配列として講演。
だから理由 -
[OK]を、ので、プロトタイプ プロパティは、定義された
ダウンここで - ので、テンプレート 単純なアンダースコアです
テンプレート、アンダースコアテンプレート あなたができる方法であること -
テンプレートに類似 ダビデは言及していたことを
サーバ上で、次のことが可能 単にscriptタグを記述し
JavaScriptをされていない スクリプトが、テキスト、HTML
と私は何をやっている とjQueryのは -
それは、これらを維持することはありません オープン、ええ、そこに私達は行く。
jQueryを使って、それはなってきた そのテンプレートのHTML値
そして、その後を介してそれを実行している ユーティリティー·ライブラリーを強調
テンプレートエンジン。
そうドキュメンテーション そのためにここにダウンしている
ユーティリティテンプレートの下で
しかし、基本的にはあなたが読むことができます それについてもう少し。
しかし、それは、この文字列を評価 関数に変換します
我々は、データを渡すことができている に、それを動的に呼び出す。
私が持っている次の二つの方法 addStudentとaddLectureです。
これらは、単にに追加 私が設定した、内部の配列
コンストラクタ内と この方法をレンダリングします。
それでは、新しいを作成してみましょう CSのインスタンスは、164と呼ばれる
このコースを持っている 番号164およびタイトル。
してから持ってCS50 CS1にCS50とイントロ
そして、数を追加 講義の学生
して、CS50レンダリング呼び出します。
そして私は、コードを実行すると 私は評価とそれをやっている。
あなたが本当に使用したいことはありません 評価が、私はただ並べてる
すべて取る ここでのJavaScript
その場でそれを実行する。
それが、この中にレンダリング これらの新しいインスタンスをテンプレート
持っているのCSクラスの プロパティので、行ってきた
addLecture通って行って そしてそれぞれにaddStudent。
と私が述べたように 私はこれを返すだから、
私は実際にこれらを連鎖させることもできます addLectureとaddStudent呼び出し
そしてそれは全く同じように動作します。
JavaScriptで他の機能 それがさらに便利である
サーバ側のどこに あなたが本当に任意の時点で
アプリケーションが取得する場合 大きなあなたがどこにいるかわからない
それが設定するのは難しいです これらの個々のブレークポイント
私は、に記載されていること クロームインスペクタで
デバッガのキーワードを使用します。
だから、それだけで、D-E-B-U-G-G-E-Rです。
そして、あなたは、デバッガを置くとき コー​​ド内のキーワード
あなたが持っている - そこに我々は、2 Gを行く。
デバッガを置くとき コー​​ド内のキーワード
あなたは、デバッガを実行している
クロム等の ここインスペクタ
またはサーバー側のクローム 検査員は、JavaScriptを伝えます
その行の実行を停止する コー​​ドのと、それはあなたを可能にする
残りをステップ実行する コー​​ドの実行。
だから私は、実行コードをクリックすると ここで、それは今、停止だ
このデバッガラインで、私のことができます [OK]を参照して、ここでCS50の値です
それは持って当然だ タイトル、コースID、
それは何の講義を持っていないですが、 は生徒ません。
そして私はをステップ実行することができます 全体addLecture、
私はそれがプッシュするのは見ることができます これらの講義を上、
その上にマウス、「Hello World」の。
私が実際にできる コンソールこれを行うため、これが設定されている
現在のオブジェクトへ あなたはインチだということ
この講義では、「Hello World」のである。
ステッピングを保つ 同じくらい私が好きな経由。
足元したくない場合
関数呼び出し '原因に 私はそれが起こっているのか知っている
addLectureに入るためには、 このボタンはここあります
「次のステップオーバーと言いいる 関数呼び出し、 "ので、私は行くことができます
ポイントに私は多分私た 何か不思議。
のような、たとえば164がレンダリングされます。
したがって、この時点では、それはだ レンダリングされようとして。
私は、このテンプレートを見ることができます コンパイルされたテンプレートです。
私はこの時点で見ることができます 二人の学生を持っている必要があります
そして2講義。
して、プロトタイプがあります 私が言及していたチェーン。
来るので、デフォルトの1 ただオブジェクトと一緒に
一般的にはJavaScriptの、中
それは2つの文字列が付属しています コンストラクタの値。
してからのものという 私は自分自身に追加しました
addLecture、addStudentと [プロパティ]
このに固有であることを クラスのインスタンス
それが呼び出されたとして 新しいキーワードと。
それでは、ただ1をやらせる これについての詳細例
した後、我々はいくつかのためにステップします もっと面白いこと
サーバー側で。
それでは、先に行くと、開いてみましょう で、この最後の例 -
見てみましょう。ここで、コードは？
これがどこに行ったか分からない。
[OK]を、よく、我々だけでスキップ可能性があります 実際に、このコードより -
OHしがみつく、私は逃したと思う コー​​ドのスタイルシート。
OK、それでは作ってみよう 大きなこの小さな。
この例では、私が示したよ 設定についてもう少し
プロトタイプチェーンまで、
その継承を設定する JavaScriptを使用して。
したがって、この場合には、我々は持っている 起こっているカタログ
おそらく維持するために 複数のコース。
だからカタログがあります addCourse方法。
だから、当然かどうかをチェックする その中では、渡されたインスタンスがある
もちろんとして呼び出さ 新しいキーワードと。
だから、試してみて、送信した場合
何か違う中で、 それはあなたに叫ぶでしょう。
renderメソッドれます コー​​スの各レンダリング
下記のテンプレートをコンパイルすることによって。
そして、我々はコースを持っている そのアクセス
この場合のための基底クラス 個々の部門のコース。
代わりに、各設定
もちろんドットの プロトタイプドット方式
または拡張使用してプロパティ アンダースコアライブラリ内のヘルパー
拡張コールのソートする すべてにこのプロトタイプ
これらのプロパティの、これは 便利な、少し読みやすくなります。
次に下ここでやって 設定として知られているもの
プロトタイプチェーンまで。
だから、これは実際にはほとんどない 最初は人々にトリッキー
さらには、まだこれを行った しばらくの間、それは一種のは難しい
頭を包み込む。
しかし、あなたを怖がらせることがないようにしてください。
だから私は、新たに設定している -
まったく新しいクラス ここでは、CSオブジェクト。
そしてコンストラクタで、
私はコースを言っている この引数を適用します。
だから、引数は特別である 値私はあなたがそれを呼び出すことができると思います
JavaScriptでは、 すべて持っキーワード
のすべての 一緒に渡される引数である
その関数が用意されてい 引数は、コールに、
引数キーワードを使用して。
だから私は呼んでいるように コー​​スは適用ドット、
これは、現在のコンテキストで これでCSが呼び出されている。
だから私は新しいとそれを呼び出したとき それは - それは、CSの値です。
そして私はこれを呼び出して言っている ここでコースの方法まで。
ああ申し訳ありませんが - これを呼び出す ちょうどここのコース法
しかし、この値を設定 どのような値であるために
のこれはまさにここです。
だから、適用キーワードが可能に あなたは、ソートの状態を変更する
この方法jQueryのである スイッチの種類が許可されている
としてあなたにこのうち あなたはを通して行っている
とDOM要素を作る 代わりに、jQueryオブジェクトの。
だから今、私は設定するつもりだ 一時的な機能
つかむであろう もちろんプロトタイプ。
ソートのそれを設定 そのプロトタイプに
して、プロトタイプを設定する CS関数オブジェクトに
そのの新しいインスタンスに。
そこで、基本的に私は 代わりに言って -
ここで私ダウンは、CSドットをした場合は、 プロトタイプは、新しいコースに等しい。
それは次のようになります すべてを呼び出す
このコンストラクタ関数では、
これ、私はしないだろう 必ずしもたいと思いました。
だから私はやっているすべてがある ほとんどの作成のようなもの
その代用関数のように コー​​スのプロトタイプを持つことになります
その上に、ソートの 試作品を模倣 -
もちろんしかしもせず コンストラクタのすべて
プロトタイプにそれを設定します。
そして私はちょうどよ その部門を追加
この場合は、コンピュータがある CSのオブジェクトのための科学。
そして私はのようなものを持っている それを行うのブリッジバージョン。
これは、IE9で動作しません。
私が欲しかっだから、なぜです どのようなものを表示する -
これは何をやっている ボンネットの下に。
しかし、あなたはそれを設定することができます 同じ方法で
イーコンは、関数に等しい もちろん、これらの引数を適用
して、イーコンドットプロトタイプを言う オブジェクトドットCreateCourseに等しい
ドットプロトタイプ。
だから、新しいオブジェクトを作成しているの これだけのプロトタイプである
もちろん、次いで そこに部門を設定してください。
だから今ちょうど設定を手放す ここデバッガ、実行をクリックしてください。
そこに私達は行く。
だから、CS164、我々は見ることができます 我々は持っているプロトタイプチェーン
されたプロパティ コンストラクタで設定。
設定されたこれらの値は、そのように して、プロトタイプチェーン上の
それが持っていたCSオブジェクトの 部門コンピュータサイエンスを設定します。
と、基になる上 プロトタイプチェーン、
我々は、すべて持っている メソッドとプロパティ
に固有であることを もちろんオブジェクト。
そして、我々は持っている ベースオブジェクト。
クイックのように並べ替え プロトタイプチェーンの例。
そして、あなたはそこに、ここに見ることができるように 部門ごとに2つの値は次のとおりです。
そう部署があります コンピュータサイエンスの
し、部門 私が言っている記載されていない
ここでデフォルト値として。
だから、プロトタイプチェーン 実際には、単独で
リンクリスト。
で、それをしようとする プロパティを見つけ、
それがで始めましょう トップレベルの値。
そこらで何が定義されている コンストラクタ関数
して、並べ替え下る そこからプロトタイプチェーン。
だから、そう、見つけたので -
右ここであれば、私は言う CS50ドット科、
それはコンピュータサイエンスを言うよ。
しかし、私は、varを言うなら -
[一時停止]
しかし、私は文系を言うなら 新しいコースに等しい
そして私は人文科学を言う ドット部門、
私は部門が記載されていない表示されます それが最初に行ったので -
私はプロトタイプを見ることができます ここでチェーンが実際。
だから、コースに初めて行ってきました 何もないオブジェクトと見た
プロトタイプチェーンの上 部門のこのレベル
または部門値についてそう それは、次のレベルにジャンプ
コー​​スとルックス そこに転送し、それを検索します。
だから、ただ一種のような トップダウンでダウンした
それは一種のだ 独特の何か
JavaScriptの約 あなたがいずれかを変更することができます
これらの値での 任意の時間。
だから、コンストラクタまたは中 オブジェクト上の個々のメソッド
私はこれを設定したい場合 何か新しいものにするにはカテゴリー、
または私も設定したい場合 これらの機能のいずれか
すでに存在していること
何か新しいことに、 私はそれを行うには自由です。
だから今、私はCS50ドットを持っている addLecture、そのように見えます。
そして、私はそれを設定したい場合は、 CS50 addLectureはちょうど等しく
ブランク機能へ。
それから、今私はそれを見ることができます ただ完全に変更
あなたはできないですいる 他の言語を行うには
あなたはより厳格を持っている場合、 クラスベースの継承
そしてすべてがある 並べ替えの設定します。
JavaScriptは非常に、非常にある それに関しては柔軟。
さあ、ジャンプバックしましょう スライドで。
もしそうなら例えば、あなた 常に機能のようなものです。
特定のを持っている この値は、それのために設定してください。
あなたは、関数ドットバインドを呼び出すことができます
どのような値を設定 これでなければなりません。
あなたはと考えることができます -
「私が考えるようにしようとしている 「現実の世界の例は良いけど、
あなたはあなたのコードを保護する場合
誰かに対して、潜在的に 値でそれを呼び出す
つまり、このことではないでしょう。
たとえば、AJAXのような 過誤のようなコールバック。
それらは、一般的に呼ばれていません
良い意味的に この属性の値。
そして、あなたはOK、私はいつも "、のようにしている これが値になるようにしたい
もちろんオブジェクトの 私が働いていることを。
私は今、またはビュー 私のコードでの作業
つまり、このことを表して DOMノードでは、あなたが設定することができます -
あなたはこのコンテキストにバインドすることができます し、それが後に呼ばれるとき
jQueryとそれが持っていないことで この良い値はそれが固執するよ
あなたはそれを境界もの。
次に、関数の呼び出しがあっただ あなたは、コンテキストを指定することができます
および任意の変数を指定 引数の数。
そして、関数があります あなたが通過可能な適用
コンテキスト内および その配列のどちらか
または引数がそのオブジェクトの あなたがそこに見るように、私は述べた。
任意の引数 お電話の機能、
あなただけで入力することができます 単語「引数」
そしてそれはすべてがあるでしょう 引数。
それは、「長さ」プロパティがあります
これは5月の引数があったかである 実際にそのメソッドに渡さ
JavaScriptで以来、 あなたは、コールのソートすることができます
変数番号と 引数の。
それは言ってに便利です これは、1つの引数を持っていた場合には、
このコードパスに従ってください。
それは2を持っていた場合は、可能性がある 別の方法に従ってください。
それはあなたが本当に持つことができます あなたのメソッドの動的なAPI。
あなたが考えることができます jQueryを使って、その
あなたが持っているときのように ドルは上またはバインド点在しています。
そして、それは一種のない さまざまなこと
あなたが1を置くかどうかの 引数又は二、三
または関数を使用して起動します。
これは、引数を使用しています 財産
と引数 多くの場合、長さ
この魔法を持っている 機能が起こる。
物事はあなたが行うことはできません 引数はそれを使用している
配列として、デフォルトでは。
だから、引数を言うことができます 3、何かに設定
あなたが使用して可能性があるため 配列代入。
あなたが使用することができます - 多くのことを アンダースコア方式の
コレクションやどちらかのために 配列を使用するための、
あなたは、引数を渡すことができます それが実現します
それは引数だと オブジェクトとソート
のあなたのためにそれの世話をする。
しかし、あなたが使用したい場合は、 渡される引数
配列としての機能を通じて、
あなたは、アンダースコアを使用することができます 2つの配列に点在しています。
多数のOne ユーティリティ関数
アンダースコアには構築される。