目次
第 1 章JavaScriptはじめに" >第 1 章JavaScriptはじめに
第 2 章 HTML で使用するJavaScript " >第 2 章 HTML で使用するJavaScript
動的属性 (参照型は属性を動的に追加できます" >基本的な型と参照 型の値動的属性 (参照型は属性を動的に追加できます
第5章 参照型" >第5章 参照型
第6章 オブジェクト指向プログラミング" >第6章 オブジェクト指向プログラミング
ホームページ ウェブフロントエンド jsチュートリアル JavaScript の高度なプログラミングの概要

JavaScript の高度なプログラミングの概要

Jul 18, 2017 pm 05:06 PM
javascript js プログラミング


前書き:

この本の半分を注意深く読むのに約 1 週間かかりました。以下は、この本を読んだ人に全体的な理解が得られることを願っています。に。現時点では少し乱雑で包括的ではないかもしれませんが、後で整理して追加します。 (2017-7-17)

第 1 章JavaScriptはじめに

第 2 章 HTML で使用するJavaScript

第 3 章 基本概念

3.1.

構文

大文字と小文字を区別する

識別子(キャメルケースの使用を推奨myCar)

コメント// /**/

strict モード (strict を使用)

ステートメント var diff-a-b; にはセミコロン を使用し、 if( test ) {alert(test) } も使用することをお勧めします。 3.2 キーワードと予約語

3.3 変数

未初期化

未定義 var message = “hi” message = 100;

型は自由に変更可能

Function test(){

Var a = “hi”; 局部

b = “hi”; 全局

}
ログイン後にコピー

Test(); エラー alert(b); こんにちは

3.4

データ型

typeof

(

定義されていますが割り当てられていません) ヌル ( Null オブジェクト ポインター

)Boolean(ブール値

tru​​e false フロー制御ステートメントは、対応するboolean変換)Number

(

8進数

0 10進数 16進数0x 浮動小数点値の範囲NaN 数値変換Number parseInt )String(文字列、一重引用符と二重引用符の違いなし、エスケープシーケンス、文字列

toString String)Object(object すべてのオブジェクトの基礎

var o = new Object();)ES

関数はデータ型ではなくオブジェクトです。

3.5

演算子

単項演算子

++ --

,+ -(データ型の変換に使用できます)

bit tor

ビットごとに押すnon-~num1 ビットごとの AND& ビットごとの OR| ビットごとの XOR^ 左シフト<<右シフト> > 符号なし右シフト>>

ブール演算子

! && || 乗算演算子* / % 加法演算子+ - 関係演算子< などの演算子 == != === !== 条件演算子? :

代入演算子 = *= /= %= += -= <<= >>= >>>=

カンマ演算子

3.6 ステートメント

3.7

関数

引数

オーバーロードなし

第4章変数、スコープ、メモリの問題

4.1

基本的な型と参照 型の値動的属性 (参照型は属性を動的に追加できます

)

変数値をコピー (基本型は異なる空間であり、参照型は同じ空間を参照します)

パラメータを渡す (同じ)

Type Types y (Typeof Instanceof)

4.2

実行環境とアクション ドメイン

拡張ドメインチェーン (Try-Catch with) ブロックレベルのスコープなし (の場合) 変数クエリ識別子の宣言)

4.3ガベージコレクション

戦略(参照カウントをクリアにマーク) パフォーマンスの問題 メモリの管理

第5章 参照型

5.1 Objecttype

Var person = {};(関数に多数のパラメータを渡すのに適しています) var parson = new Object(); ["name"](

変数を使用して属性を表す場合は

を使用してください) person.name(

推奨)

5.2 Array

type

Var Colors = new配列(); var Colors = Array(); var Colors =[*****];

Colors[*] = *****; 配列を検出します:

配列.isArray()

変換メソッド:

toString() valueOf() toLocaleString() join()

スタックメソッド:

Push() Pop()

Queueメソッド:シフト() unshift()

並べ替え方法:

reverse() sort(

比較関数のパラメータを追加できます

)

操作方法:concat()前と同じslice()元のインターセプトセグメント

splice()

変更された元のセグメントは削除または追加可能 Positionメソッド: indexOf() lastIndexOf() 項目の位置を返す

反復メソッド:

every() filter() forEach() map() some()

各項目は処理されますが、元の配列は変更されません

Mergeメソッド:

reduce()

順序reduceRight()逆順 2つの項目を最後までたどる

5.3 DateType New Date() Inside

parse(

"May 2 5,2004" ) UTC (2005,0) Date.now()

継承メソッド:

toLocaleString() toString() valueOf()

日付書式設定メソッド:

toDateString() toTimeString() toLocaleDateString( ) toLocal eTimeString ( ) toUTCString()

Date

/

Timeコンポーネントメソッド: 特定の読み取りが多すぎます

5.4RegExp

type

リテラル

var pattern1 = / [bc]at /i ;

Constructor

var pattern2 = new RegExp(" [bc]at ", " i ");

RegExpインスタンス属性

グローバルignoreCase lastIndex複数行ソース

役に立たない

RegExpインスタンスメソッド: exec() キャプチャグループ(一致するアイテムの複数のセットをキャプチャ) text() 一度に一致するかどうかを確認する

RegExpConストラクターの属性: 少し多すぎます。最新の一致の関連情報を表示するために使用されます

このモードの制限: 一部の言語(Perl)でサポートされている高度な正規表現機能が欠けていますが、十分ですほとんどの場合

5.5 Function型 Functionはオブジェクト(Functionのインスタンスでもある)であり、関数名はポインタである。

function sum(num1,num2) { }

Var sum = function(num1,num2){ };

オーバーロードはありません。関数はオブジェクトであり、関数名はポインタ。

関数宣言と関数式: function ******* 関数宣言の昇格 var sum = ******* は昇格されません

内部function 属性: argumentsobject(propertycalleeは関数を指す) thisobject(関数実行の環境オブジェクトを指す) 発信者 (現在の関数の呼び出しを指します。グローバル スコープの関数の場合、値は null)

関数の属性とメソッド:

Attributes

(length宣言された数パラメータ prototypeInherit )

非継承メソッド:

call() apply() binding()

a.apply( b, c); d ); 環境内の

オブジェクト

b 内の関数 a を実行し、 パラメータを a c (引数 または配列 ) / d ( write each item out )

Var a = b.bind(c);

a

c環境オブジェクト で実行される関数です

5.6

基本的なパッケージ化タイプ:

Boolean

タイプ:

var booleanObject = new Boolean(true); Boolean オブジェクトは決して使用しないことをお勧めします。

Number

Type:

varnumberObject = new Number(10); toFixed() toExponential() toPrecision()

Number を直接インスタンス化しないこともお勧めしますタイプ。

String

Type:

var stringObject = new String("hello world")Attribute

;

1.文字メソッド: charAt() または string[] 対応する文字を返す charCodeAt() 対応する文字コードを返す

2. 文字列操作メソッド:

concat() または + 演算子は配列 concat()

Slice() substring() substr() インターセプト文字列、3 つは非常に柔軟です

3.文字列位置メソッド: indexOf() lastIndexOf()

4.trim()メソッド すべての接頭辞と接尾辞のスペースを削除します trimLeft() TrimRight()

5. 文字列の大文字と小文字の変換メソッド

toLowerCase() toUpperCase() 古典的なメソッド

toLocaleLowerCase() toLocaleUpperCase() 特定地域 こちらの方が信頼性が高い

6. 文字列パターン マッチングメソッド。

マッチ( ) は本質的に RegExpexec() と同じで、一致した文字列の配列を返します

search() は最初に一致したインデックスを返します それ以外の場合は に戻ります-1

Replase ()

文字列を照合して置換

Split ()

分割されたパーティションを照合して配列を生成

7.localecompare

8.fromCharCode()

静的メソッド 複数の文字エンコーディングを変換

9.HTML

メソッド 例: big() string

5.7 単一の組み込みオブジェクト

1.グローバル

オブジェクト

URL

エンコード方法:

encodeURI()

全体 encodeURIComponent()

特定の段落のエンコード

decodeURI( ) 全体 decodeURIComponent()

特定セクションのデコード

eval()メソッドは非常に強力で非常に危険ですECMAScript

parser

Globalオブジェクトのプロパティ未定義

配列…… はすべて属性です Webブラウザはwindow

オブジェクト

の一部としてグローバルオブジェクトを実装します

2.Mathオブジェクト

Math

オブジェクトのプロパティ いくつかの特別な値π

min() max() など

メソッド

丸めメソッド: 10進数値を整数に変換

Math.ceil(25) 1 つ追加 Math.floor(25) 1 つ返す Math.round(25) 丸め

random()メソッド [0,1 )間の乱数

その他のメソッド 読みすぎ

第6章 オブジェクト指向プログラミング

6.1オブジェクトを理解する

6.1。 1プロパティ タイプ:

データ プロパティ: 4 プロパティ

アクセス プロパティ: データ値は含まれません 4 Object.defineProperty() 経由のプロパティ定義

6.1.2複数のプロパティを定義します: Object.defineProperties() データ属性またはアクセサー属性にすることができます。

6.1.3プロパティを読み取るための特性: Object.getOwnPropertyDescriptor()

6.2オブジェクトの作成

6. 2. 1ファクトリーモード(読み取り )

6.2.2コンストラクターパターン(本を読む新しいコンストラクター)

6.2.3プロトタイプパターン:

1. プロトタイプオブジェクトを理解する

2.プロトタイプとin演算子( in for-in )

3.より単純なプロトタイプ構文(オブジェクトにアクセスするためのオブジェクトリテラル)

4.プロトタイプのダイナミクス( プロトタイプは別のオブジェクトに置き換えることができますが、すでに作成されたインスタンスには無効です)

5.ネイティブオブジェクトのプロトタイプ( プロトタイプモードを使用するだけですで新しいメソッドを定義できますが、お勧めできません)

6. プロトタイプオブジェクトの問題: インスタンス自体に属するプロパティがありません

6.2.4コンストラクターパターンを使用しますとプロトタイプ パターンの組み合わせ

最も一般的なパターンでは、インスタンスには独自のプロパティとメソッドがあり、一部は共有されます。

6.2.5動的プロトタイプモード

上記のモードに判定文を追加し、プロトタイプに動的にメソッドを追加します。

6.2.6 寄生コンストラクター パターン

とファクトリー パターンの違いは new が 1 つだけで、複数の return があります。返されたオブジェクトはコンストラクターとは何の関係もないため、instanceof 演算子を使用してオブジェクトの型を決定することはできません。お勧めしません。

6.2.7Sure コンストラクター パターン

は寄生コンストラクター パターンに似ていますが、thisnew がありません。 インスタンスが検出できません

6.3

継承

6.3.1

プロトタイプチェーンプロトタイプ検索メカニズム

1

デフォルトのプロトタイプを忘れないでください: すべての関数デフォルトのプロトタイプはすべて

Object のインスタンスです。

2.

プロトタイプとインスタンスの関係を決定します:

instanceof isPrototypeOf()

3. メソッドを慎重に定義します: インスタンスがプロトタイプを置き換えた後に、新しいメソッドを定義する必要があります。

4. プロトタイプチェーンの問題:

プロトタイプの外側の属性も継承されます

サブタイプのインスタンスを作成するとき、パラメーターをスーパータイプのコンストラクターに渡すことができません。

単独で使用されることはほとんどありません。

6.3.2

コンストラクターを借用する

call または apply を使用してパラメーターを継承して渡します ただし、使用できるのはコンストラクター パターンのみです。

また、単独で使用されることはほとんどありません。

6.3.3

結合継承

プロトタイプチェーンの実装

プロトタイプのプロパティとメソッドの継承

コンストラクターの実装の借用

インスタンスの継承プロパティ

最もよく使用される継承メソッド

6.3.4

プロトタイプ継承

(Reading)

コンストラクターは使用されません

保存された型も使用できますが、プロトタイプパターンと同様に共有されます 参照型プロパティ。

6.3.5

寄生継承

(Reading)

コンストラクターは考慮されません

使用可能 ただし関数の再利用は不可6.3. 6寄生結合継承(

Reading

)

結合継承には問題があります。スーパータイプのコンストラクターが 2 回呼び出され、インスタンスとプロトタイプに属性が重複します。 寄生結合継承はこの問題を解決し、最も理想的な継承パラダイムになります。

第7章

関数式

関数の定義方法:( 関数宣言は

で昇格されます)

名前 )

関数式(nameは空の匿名関数/

名前付き一般関数式は匿名関数

)

7.1再帰

厳密モードは使用できません argument.callee 名前付き関数式を使用できます。

7.2クロージャ: 別の関数のスコープ内の変数にアクセスできる関数

自己要約: クロージャは関数であり、通常は匿名関数です

1。クロージャ 返された外部関数内の変数にアクセスできます。

2. 別の関数のアクティブなオブジェクトは、クロージャのスコープ チェーンが破棄されるまで保存されます。

7.2.1クロージャと変数

副作用: 変数オブジェクト全体がクロージャのスコープチェーンに保存されるため、返される変数は最後に保存された値になります。

例えば、forループでは、満足できない状況が発生します。

7.2.2 クロージャ内の this オブジェクト

this オブジェクトに関して、いくつかの特殊なケースでは、クロージャはグローバル オブジェクトに配置されることがあります。 知らないうちに変わる。

7.2.3

メモリリーク

通常のメモリリサイクルを保証するためにクロージャを使用する

7.3

ブロックレベルのスコープを模倣する

匿名の自己を使用する-模倣する関数を実行します。

自己要約関数:

1.

内部実行後に破棄されます。

2.

匿名の自己実行関数により、グローバル メソッドとプロパティの汚染を軽減できます。

クロージャにはメモリの問題がありますが、この組み合わせを使用するのは非常に快適です。

7.4

プライベート変数

オブジェクト上のすべてがパブリックです

関数内のすべてがプライベートです

クロージャを通じて関数のパブリック メソッドを作成します

(特権メソッド ) ---------プライベート変数の取得に使用

コンストラクター内で作成

メモリ例: this.****** = function() {**** };

しかし、インスタンス化のたびにメソッドのセットが再構築されるため、無駄が生じます。

7.4.1

静的プライベート変数プライベート スコープ

グローバル コンストラクターのプロトタイプで囲んで特権メソッドを作成します。

コードの再利用性が向上しますが、各インスタンスには独自のプライベート変数がありません。 (これは静的プライベート変数と呼ばれるため)

特定のニーズに応じて、インスタンス変数または静的プライベート変数を使用します。

7.4.2モジュールパターン( 単一のケース: インスタンスが 1 つだけあるオブジェクト)

匿名関数内でプライベート変数とメソッドを定義し、オブジェクト リテラルを関数の戻り値。 7.4.3

拡張モジュールモード

は特定の型のインスタンスである必要があり、いくつかのプロパティまたはメソッドを追加する必要があります。

以上がJavaScript の高度なプログラミングの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

株価分析に必須のツール: PHP と JS を使用してローソク足チャートを描画する手順を学びます 株価分析に必須のツール: PHP と JS を使用してローソク足チャートを描画する手順を学びます Dec 17, 2023 pm 06:55 PM

株式分析に必須のツール: PHP および JS でローソク足チャートを描画する手順を学びます。特定のコード例が必要です。インターネットとテクノロジーの急速な発展に伴い、株式取引は多くの投資家にとって重要な方法の 1 つになりました。株価分析は投資家の意思決定の重要な部分であり、ローソク足チャートはテクニカル分析で広く使用されています。 PHP と JS を使用してローソク足チャートを描画する方法を学ぶと、投資家がより適切な意思決定を行うのに役立つ、より直感的な情報が得られます。ローソク足チャートとは、株価をローソク足の形で表示するテクニカルチャートです。株価を示しています

推奨: 優れた JS オープンソースの顔検出および認識プロジェクト 推奨: 優れた JS オープンソースの顔検出および認識プロジェクト Apr 03, 2024 am 11:55 AM

顔の検出および認識テクノロジーは、すでに比較的成熟しており、広く使用されているテクノロジーです。現在、最も広く使用されているインターネット アプリケーション言語は JS ですが、Web フロントエンドでの顔検出と認識の実装には、バックエンドの顔認識と比較して利点と欠点があります。利点としては、ネットワーク インタラクションの削減とリアルタイム認識により、ユーザーの待ち時間が大幅に短縮され、ユーザー エクスペリエンスが向上することが挙げられます。欠点としては、モデル サイズによって制限されるため、精度も制限されることが挙げられます。 js を使用して Web 上に顔検出を実装するにはどうすればよいですか? Web 上で顔認識を実装するには、JavaScript、HTML、CSS、WebRTC など、関連するプログラミング言語とテクノロジに精通している必要があります。同時に、関連するコンピューター ビジョンと人工知能テクノロジーを習得する必要もあります。 Web 側の設計により、次の点に注意してください。

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

PHP および JS 開発のヒント: 株価ローソク足チャートの描画方法をマスターする PHP および JS 開発のヒント: 株価ローソク足チャートの描画方法をマスターする Dec 18, 2023 pm 03:39 PM

インターネット金融の急速な発展に伴い、株式投資を選択する人がますます増えています。株式取引では、ローソク足チャートは一般的に使用されるテクニカル分析手法であり、株価の変化傾向を示し、投資家がより正確な意思決定を行うのに役立ちます。この記事では、PHP と JS の開発スキルを紹介し、株価ローソク足チャートの描画方法を読者に理解してもらい、具体的なコード例を示します。 1. 株のローソク足チャートを理解する 株のローソク足チャートの描き方を紹介する前に、まずローソク足チャートとは何かを理解する必要があります。ローソク足チャートは日本人が開発した

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

jsとvueの関係 jsとvueの関係 Mar 11, 2024 pm 05:21 PM

js と vue の関係: 1. Web 開発の基礎としての JS、2. フロントエンド フレームワークとしての Vue.js の台頭、3. JS と Vue の補完関係、4. JS と Vue の実用化ビュー。

See all articles