この章では、このポインター、範囲、プロトタイプなど、JSのいくつかの根本的な原則については説明していません。コードを簡素化し、開発中の実行効率を改善することを助長するものの一部を含むか、経験的方法として使用できます。長さは長くはありません。小さなステップでは、記事全体を読んでプログラミングの喜びを体験できます。
2つの間隔内で乱数を取得します
コードコピーは次のとおりです。
関数getRandomNum(min、max){// 2つの間隔で乱数を取得します
// @南南南南南南最初のパラメーターは2番目のパラメーターよりも大きいため、判断を追加することはより信頼性が高いことを提案しています。
if(min> max)
max = [min、min = max] [0]; // 2つの変数値をすばやく交換します
var range = max -min + 1;
var rand = math.random();
MIN + MATH.FLOOR(RAND * range)を返します。
};
正/負のパラメーターをランダムに返します
コードコピーは次のとおりです。
関数getRandomxy(num){//ランダムな正/負のパラメーターを返します
num = new Number(num);
if(math.random()<= 0.5)
num = -num;
numを返します。
}
setInterval()またはsetimeout()タイマー関数パスパラメーター
コードコピーは次のとおりです。
var s = '私はパラメーターです';
関数fn(args){
console.log(args);
}
var a = setInterval(fn(s)、100); // xxxxxエラーxxxxxx
var b = setInterval(function(){//正しい、匿名関数を使用して時限関数を呼び出す
fn(s);
}、100);
setInterval()またはsetimeout()タイマーは再帰的に呼び出されます
コードコピーは次のとおりです。
var s = true;
関数fn2(a、b){//ステップ3
if(s){
ClearInterval(a);
ClearInterval(b);
}
};
関数fn(a){//ステップ2
var b = setInterval(function(){
FN2(a、b)// 2つのタイマーで渡されます
}、200)
};
var a = setInterval(function(){//ステップ1
fn(a); // bは、シートパラメーターに渡すことができるタイマー自体を表します
}、100);
文字列を番号に変換します
コードコピーは次のとおりです。
//新しい番号(文字列)も番号も(文字列)は文字列からゼロを減算する必要はありません
var str = '100'; // str:文字列
var num = str -0; // num:number
ヌル価値判断
コードコピーは次のとおりです。
var s = ''; //空の文字列
if(!s)//空の文字列はデフォルトでboolean falseに変換され、判断ステートメントに直接書くことができます
if(s!= null)//しかし、空の文字列!= null
if(s!= undefined)//空の文字列も!=未定義です
IEブラウザparseint()メソッド
コードコピーは次のとおりです。
//次の変換はIEで0であり、他のブラウザは1です。これは、IEブラウザの数字の説明に関連しています。
var inum = parseint(01);
//したがって、互換性のある文章はです
var num = parseint(new Number(01));
FirebugはJSコードを便利にデバッグします
コードコピーは次のとおりです。
// firebugには内蔵コンソールオブジェクトがあり、情報を表示するための組み込みのメソッドを提供します
/**
* 1:console.log()。これは、alert()またはdocument.write()の代わりに使用でき、プレースホルダー出力、文字(%s)、整数(%dまたは%i)、浮動小数点数(%f)、オブジェクト(%o)をサポートします。例:console.log( "%d year%d month%d day"、2011、3、26)
* 2:情報が多すぎる場合は、グループに表示できます。使用される方法はconsole.group()とconsole.groupend()です
* 3:console.dir()は、オブジェクトのすべてのプロパティとメソッドを表示できます
* 4:console.dirxml()は、Webページのノードに含まれるHTML/XMLコードを表示するために使用されます
* 5:console.assert()assert、式または変数が真であるかどうかを判断するために使用される
* 6:console.trace()は、関数のコールトラックを追跡するために使用されます
* 7:Console.Time()およびConsole.TimeEnd()は、コードの実行時間を表示するために使用されます
* 8:パフォーマンス分析(プロファイラー)は、プログラムの各部分の実行時間を分析して、ボトルネックを見つけることです。使用される方法はconsole.profile().... fn .... console.profileand()です。
*/
現在のミリ秒をすばやくかかります
コードコピーは次のとおりです。
// t ==現在のシステムミリ秒値、理由: +サイン演算子が呼び出され、日付の値()方法が呼び出されます。
var t = +new Date();
小数整数ビットをすばやく取得します
コードコピーは次のとおりです。
// x == 2、次のx値は2であり、負の数も変換できます
var x = 2.00023 | 0;
// x = '2.00023' | 0;
2つの変数値インターチェンジ(中間量なし)
コードコピーは次のとおりです。
var a = 1;
var b = 2;
a = [b、b = a] [0]
アラート(a+'_'+b)//結果2_1、a、およびbの値が交換されました。
論理または「||」オペレーター
コードコピーは次のとおりです。
// bはnull:a = b、bはnull:a = 1です。
var a = b || 1;
//最も一般的な使用法は、プラグインメソッドのパラメーターを渡し、イベントターゲット要素を取得することです。イベント=イベント|| window.event
// IEにはwindow.eventオブジェクトがありますが、FFはありません。
メソッドオブジェクトのみがプロトタイププロパティを持っています
コードコピーは次のとおりです。
//メソッドにはオブジェクトプロトタイププロトタイププロパティがありますが、元のデータにはvar a = 1などのこのプロパティがありません。
function person(){} //ヒューマンコンストラクター
person.prototype.run = function(){alert( 'run ...'); } //プロトタイプの実行方法
person.run(); // エラー
var p1 = new person(); //新しいオペレーターが使用されている場合にのみ、プロトタイプ実行メソッドがP1に割り当てられます。
p1.run(); // 走る...
すぐに曜日を獲得します
コードコピーは次のとおりです。
//計算システムの現在の時刻は週です
var week = "Today is:week" + "初日、2、3、4、5、6"。
閉鎖バイアス
コードコピーは次のとおりです。
/**
*閉鎖:JSメソッド本体は、閉鎖と呼ばれることがあります。インライン関数が外部関数の特定のパラメーターまたはプロパティを参照する場合に発生するだけではありません。
*独立した範囲があり、いくつかのサブスコープが存在する可能性があり(つまり、ネストされた方法)、最後に閉鎖範囲が最も外側の方法の範囲です。
*それは、それ自体のメソッドパラメーターと、すべての埋め込まれた関数のメソッドパラメーターを含みます。したがって、埋め込まれた関数に外部から参照がある場合、参照の範囲は、参照関数が配置されている(トップレベルの)メソッド範囲です。
*/
関数a(x){
関数b(){
アラート(x); //外部関数パラメーターを参照します
}
bを返します。
}
var run = a( 'run ...');
//スコープの拡張により、外部関数Aの変数を参照して表示できます
走る(); // alert():run ..
アドレスパラメーター文字列とタイミングの更新を取得します
コードコピーは次のとおりです。
//疑問符を取得しますか?次のコンテンツには疑問符が含まれています
var x = window.location.search
//#番号を含むアラーム番号の背後にあるコンテンツを取得します
var y = window.location.hash
//自動Webページの更新はタイマーで達成できます
window.location.reload();
ヌルと未定義
コードコピーは次のとおりです。
/**
*未定義のタイプには、1つの値、つまり未定義です。宣言された変数が初期化されていない場合、変数のデフォルト値は未定義です。
* nullタイプには、1つの値、つまりnullのみがあります。 nullは、まだ存在していないオブジェクトを表すために使用され、存在しないオブジェクトを返しようとする関数を表すためによく使用されます。
* ECMaScriptは、未定義はNULLから派生していると考えているため、それらは等しいと定義されています。
*しかし、場合によっては、これら2つの値を区別しなければならない場合、どうすればよいですか?次の2つの方法を使用できます
*判断を下すとき、オブジェクトにニーズに応じて値があるかどうかを判断するときに、「===」強いタイプの判断を使用することが最善です。
*/
var a;
アラート(a === null); // false、aは空のオブジェクトではないためです
アラート(a === undefined); //本当です、Aは初期化されていないため、値は未定義です
// 導入
アラート(null == undefined); // true、 '=='演算子はタイプ変換を実行するため、
//同様に
アラート(1 == '1'); // 真実
アラート(0 == false); // true、falseは数字タイプ0に変換します
メソッドにパラメーターを動的に追加します
コードコピーは次のとおりです。
//メソッドAにはもう1つのパラメーター2があります
関数a(x){
var arg = array.prototype.push.call(arguments、2);
アラート(引数[0]+'__'+引数[1]);
}
選択したボーダースタイルをカスタマイズします
コードコピーは次のとおりです。
<! - エフェクトを試すためにページにコピーして、意志でスタイルをカスタマイズできます - >
<SPAN STYLE = "BORDER:1PX SOLID RED; POSION:ABSOLUTE; OVERFLOW:HIDDEN;" >
<select style = "マージン:-2px;">
<オプション>カスタム選択ボーダースタイルを選択</option>
<オプション> 222 </option>
<オプション> 333 </option>
</select>
</span>
最も簡単なカラーパレット
コードコピーは次のとおりです。
<! - js値値を抽出し、任意の色を任意のオブジェクトに設定します - >
<入力型= color />
関数、オブジェクトは配列ですか?
コードコピーは次のとおりです。
var anobject = {}; //オブジェクト
anobject.aproperty = "object of object"; //オブジェクトのプロパティ
anobject.amethod = function(){alert( "object of object")}; //オブジェクトのメソッド
//以下に焦点を当てます。
アラート(anobject ["aproperty"]); //属性名をサブスクリプトとして配列として属性にアクセスできます
anobject ["amethod"](); //メソッド名をサブスクリプトとして配列として呼び出すことができます
for(anobjectのvar s)//反復処理のためにオブジェクトのすべてのプロパティとメソッドを転送
alert(s +” is a” + typeof(anobject [s]));
//関数タイプのオブジェクトでも同じです。
var afunction = function(){}; //関数
abunction.aproperty = "function of function"; //関数のプロパティ
abunction.amethod = function(){alert( "function of function")}; //関数の方法
//以下に焦点を当てます。
アラート(afunction ["aproperty"]); //サブスクリプトとして属性名を持つ配列としてプロパティにアクセスできます
Autction ["amethod"](); //関数が配列の添え字として使用されている場合、メソッド名を添え字として使用してメソッドを呼び出すことができます
for(var s in unction)//反復処理のトラバーサル関数のすべてのプロパティと方法を反復
alert(s +” is a” + typeof(afction [s]));
コードコピーは次のとおりです。
/**
*はい、オブジェクトと関数は、属性名またはメソッド名を添え字として使用して、配列のようにアクセスおよび処理できます。
*それで、それは配列またはオブジェクトと見なされるべきですか?配列は線形データ構造と見なされるべきであることがわかっています。線形データ構造には一般に、特定のルールがあります。これらは、波のような統一バッチイテレーション操作などに適しています。
*オブジェクトは、粒子に少し似た散在したパーソナライズされたものを説明するのに適した個別のデータ構造です。
*したがって、次のように尋ねることもできます。オブジェクトの量子理論がある場合、答えは次のとおりです。波粒子の二重性!
*したがって、JavaScriptの関数とオブジェクトには、オブジェクトと配列の両方の特性があります。ここの配列は、「辞書」と呼ばれます。「辞書」と呼ばれます。これは、任意に伸ばして凝縮できる名前価値ペアのコレクションです。実際、オブジェクトと関数の内部実装は辞書構造ですが、この辞書構造は、厳密で絶妙な文法を通じて豊富な外観を示しています。 Quantum Mechanicsが粒子を使用して一部の場所で問題を説明および対処するのと同じように、波は他の場所で問題を説明し、対処するために波を取っています。また、オブジェクトまたは配列を使用して、必要に応じて問題を説明し、対処することもできます。 JavaScriptのこれらの素晴らしい機能を把握するのが得意である限り、多くの簡潔で強力なコードを書くことができます。
*/
空白の領域をクリックすると、特定の要素をトリガーして閉じる/非表示になる可能性があります
コードコピーは次のとおりです。
/**
*ページにドロップダウンメニューなどがある場合があります。これにより、ユーザーはブランクをクリックしたり、他の要素をクリックしたりするときに非表示にする必要があります。
*グローバルドキュメントクリックイベントをトリガーできます
* @param {オブジェクト}「ターゲットオブジェクト」
*/
$(document).click(function(e){
$( "ターゲットオブジェクト")。hide();
});
/**
*しかし、1つの欠点は、要素をクリックして表示したい場合です
*イベントが時間内にクリックするグローバルドキュメントオブジェクトにバブルアップしないようにしない場合、上記の方法が実行されます
*/
$( "ターゲットオブジェクト")。クリック(function(event){
イベント=イベント|| window.event;
event.stoppropagation(); //ターゲットオブジェクトをクリックするとき、イベントが時間内に泡立つのを防ぎます
$( "ターゲットオブジェクト")。トグル();
});
上記は、私によって編集された一般的に使用されるJavaScriptメソッドです。それらは、開発中に直接記録して使用できます。これは、困っている友人にもお勧めします。