js jquery_javascriptスキルの共通知識ポイントまとめ

WBOY
リリース: 2016-05-16 16:11:31
オリジナル
1226 人が閲覧しました

1. jquery ソースコードの共通知識

1.string、数値型変換のショートカットメソッド

コードをコピーします コードは次のとおりです:

// @param s は文字列、n は数値
関数 fn(obj){
//文字列型に変換
var s = obj "";
//数値型に変換
var n = obj;
}

インタビューの例を共有します:

//Add は以下を自動的に文字列に変換します
"64" 4="644"
//減算すると自動的に数値に変換されます
"64"-4=60

2.bool型変換

!!obj、bool 型にキャストします

コードをコピーします コードは次のとおりです:

alert(!!0) //結果は false
alert(!!"33dd") //結果は true

!obj、反対のブール型を取得します

コードをコピーします コードは次のとおりです:

alert(!0) //結果は true
alert(!"222333") //結果は false

3. === と ==

の違い

=== は厳密な等価性であり、型変換は実行されませんが、== は厳密な等価性ではなく、型変換を実行します。一部の JS 書籍では、開発者が == または != を使用しないことを推奨しています。

ただし、jquery のソースコードでは、未定義や null を判定する際に「==」や「!=」が使用される場合があります。

コードをコピーします コードは次のとおりです:

//ここでの判定は、obj が null であることと、obj が未定義であることを除外します
if(obj != null){
}

4. obj がウィンドウオブジェクトであるかどうかを確認します

コードをコピーします コードは次のとおりです:

//null == window.null は true
関数 isWindow(obj){
obj を返します != null && obj == window.obj;
}

5.|| および && の使用上のヒント

コードをコピーします コードは次のとおりです:

//例 var aa=5; name = aa {} の場合、名前は 55
this.name = name || name 値が存在する場合、値は name であり、それ以外の場合は {}
//例 var aa=5; name = aa && {}; name は {}、aa が 5 なので、0
でない場合は true this.name = bool && [] // bool が true の場合、値は [] で、それ以外の場合は bool

典型的な例:

コードをコピーします コードは次のとおりです:

( window.foo || ( window.foo = "bar" ) ); alert(window.foo) //ポップアップバー
// なぜ最終結果は bar なのでしょうか?実際には、結果は bar
である必要があります。

6. setTimeout(fn,0) と setTimeout(fn) の違い

SetTimeout(fn,0) と setTimeout(fn) はどちらも遅延実行ですが、setTimeout(fn) の遅延は setTimeout(fn,0) よりも長くなります。たとえば、

コードをコピー コードは次のとおりです:

関数 fn(){
var data = new Date();
for(var i=0;i If(i==1000){
console.log("fn=" data.getTime());
}
}
}
関数 fn1(){
var data = new Date();
for(var i=0;i If(i==1000){
console.log("fn1=" data.getTime());
}
}
}
setTimeout(fn,0),
setTimeout(fn1);

結果:

7. 数値かどうかを判断します

コードをコピーします コードは次のとおりです:

関数 isNumeric(obj){
return !isNaN(parseFloat(obj)) && isFinite(obj);
}

8. 空のオブジェクトかどうかを判断します

コードをコピーします コードは次のとおりです:

関数 isEmptyObject(){
変数名;
// オブジェクトが空でない場合はトラバースし、
を返します for (obj 内の名前) {
return false;
}
true を返します;
}

9. 検出オブジェクトの種類

obj オブジェクトの型と戻り値の型を検出します。型を決定するには Object.prototype.toString() を使用します。ただし、IE の以前のバージョンとの互換性の問題があるため、{}.toString を使用して監視します。戻り値は [オブジェクト配列]、[オブジェクト オブジェクト]、[オブジェクト関数]

コードをコピーします コードは次のとおりです:

//型判定
関数 isType(type){
戻り関数(o){
return Object.prototype.toString.call(o) === '[object ' type ']';
}
}
var isString = isType(“String”);
var isObject = isType("オブジェクト");
var isArray = isType("配列");
isString("私はバレット・リーです。");
isArray([1,2,3]);
isObject({});

10. jqueryでスペースを削除するtrimの魔法

コードをコピー コードは次のとおりです:

// if (String.prototype.trim && “uFEFFxA0″.trim() !== “”) と同等 高度なブラウザはすでにネイティブ String トリム メソッドをサポートしていますが、pFan はそれを回避するために全角空白を解析することもできません。したがって、追加の判断が追加されます: "uFEFFxA0".trim() !== ""
vart core_version = "1.0",core_trim = core_version.trim; 関数トリム(){
Core_trim && !core_trim.call("uFEFFxA0") ?
関数 (テキスト) {
return text == null ?
"":
Core_trim.Call (text); // 私の理解では、これは "" ".trim.call (text) であるはずです。これを "1.1.0".trim.ct (テキスト)
>                                                                                                   
// 高度なブラウザはネイティブの文字列トリムメソッドをすでにサポートしています。ブラウザがそれをサポートしていない場合は、
を使用してください。 関数 (テキスト) {
Var Whitespace = "[\ x20 \ t \ r \ n \ n \ f]",
rtrim = new RegExp("^" 空白 " |((?:^|[^\\])(?:\\.)*)" 空白 " $", "g");
return text == null ?
"":
(テキスト "").replace(rtrim, "");
},
//nodeName 関数は、dom ノードのノード名を取得するか、その名前が受信パラメータと一致するかどうかを判断します
ノード名: function(elem,name){
//IEでは、DOMノードのnodeNameはDIV
のように大文字で表記されます。 return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
}
}


11. jquery

に配列または配列に似た値が含まれているかどうかを検出します。

コードをコピー コードは次のとおりです:

/**
渡された値が配列内に存在するかどうかを確認し、存在する場合は値の位置を返し、存在しない場合は -1 を返します。
*elem は取得する値を指定します。
*arr 配列
*i オプションの整数パラメータ。検索を開始する配列内の位置を指定します。有効な値は 0 ~ arr.length - 1 です。このパラメータを省略した場合、配列の最初の要素から検索が開始されます。
​*/
関数 inArray(elem, arr, i){
var len;
If (arr) {
//ブラウザが配列をサポートしている場合、indexOf メソッドがあります
If ([].indexOf) {
return [].indexOf.call(arr, elem, i);
}
len = arr.length;
// i が負の数の場合、配列の末尾の len i の位置からインデックス付けを開始します
//これが 2 つの部分に分かれていることを理解してください。 i = i ? (i を実行します i = i ? i for (; i // 二重チェックにより、次のような配列が防止されます ar = [];ar[1]=1;ar[0] = unknown; 0 in ar =false;a[0]===unknown;                                                                                                                                                                                             If (i in arr && arr[i] === elem) {
return i;
}
}
}
-1 を返します;
}


2. JavaScript のプロトタイプチェーンに関する共通知識


1.hasOwnProperty()メソッド

hasOwnProperty() メソッドを使用して、プロパティがインスタンスに存在するかプロトタイプに存在するかを検出します。このメソッドは Object から継承し、指定されたプロパティがオブジェクト インスタンスに存在する場合にのみ true を返します。

コードをコピーします コードは次のとおりです:
関数 person(){
This.age=25;
This.job="ウェブ";
}
person.prototype={
名前:'pingfan',
sayName:function(){
アラート(this.name);
}
}
var person1=新しい人();
//コンストラクターから属性を検出し、true を返します
alert(person1.hasOwnProperty("age"));
//プロトタイプ属性から false を返します
alert(person1.hasOwnProperty("name"));
Person1.name='ping';
//インスタンス属性から true を返します
alert(person1.hasOwnProperty("name"));


2.instanceOf を通じてインスタンスが 1 つだけであることを確認します。

コードをコピーします コードは次のとおりです:
関数shiCha(opt){
// インスタンスは 1 回のみ
If( !(shiCha のこのインスタンス)){
return new shiCha(opt);
                                                                         }
var shicha = shiCha();

3.JavaScriptのArray.prototype.slice.call(引数)

通常、Array.prototype.slice.call(arguments,1) または Array.prototype.slice.call(arguments) が表示されますが、実際には Array.prototype でスライス() を使用するだけです。引数を変換して配列に変換します。2 番目のパラメーターはインデックス値であり、インデックス値から開始して配列に変換します (例: Array.prototype.call("22223)。 ",2) と Array.prototype.call([ 1,2,3,4],2) を 2 番目の文字列から開始します。

コードをコピーします コードは次のとおりです:

関数 sliArray(配列){
//出力はインデックス 1 からインデックス 3 までです
return Array.prototype.slice.call(array,1,3);
}
alert(sliArray([1,2,3,4,5,6])) //結果は 2,3

4. 空のオブジェクト F を使用してオブジェクトの継承を実現します。これが最も効率的です

コードをコピーします コードは次のとおりです:

// 最良の継承効果を得るために、空のオブジェクトをメディアとして使用します
関数 inhert(C,P){
var F=function(){};
F.prototype = P.prototype;
C.prototype = new F();
C.prototype.constructor = C;
}

3. JavaScript でよく使用されるメソッドのセット
1. 一般的な配列操作方法

配列の重複排除:

コードをコピーします コードは次のとおりです:

//配列重複排除プロトタイプ
Array.prototype.unqie = function(){
var arr = this、len=this.length、obj={}、newArr=[]; while(len--){
If(obj[ arr[len] ] !== arr[len]){
obj [arr [len]] = arr [len];                                                                                                                                           }
newArr.reverse() を返します
}



配列内の最大値を取得します:

コードをコピーします コードは次のとおりです: Array.prototype.arrMax=function(){
var arr=this, len=this.length,max=arr[0];
for(var i=1;i If(max                                                                                                                                             } }
return max;
}
//sort
を通じて配列の最大値を取得します Array.prototype.arrMax=function(){
var arr=this;
arr.sort(function(a,b){
return a-b;
})
arr[arr.length-1];
を返します }
// Math.max を使用して配列の最大値を取得します
Array.prototype.arrMax =function(){
var 配列 = this;
Math.max.apply(null, array) を返します;
}
alert([1,2,3,4,5,6,9,8,7,9].arrMax());

配列内の最小値を取得します:

コードをコピーします コードは次のとおりです:

//配列内の最小値
Array.prototype.arrMin=function(){
var arr=this, len=this.length,min=arr[0];
for(var i=1;i If(分>arr[i]){
Min=arr[i];
} }
return min;
}
//sort
を通じて配列内の最小値を取得します Array.prototype.arrSortMin=function(){
var arr=this;
arr.sort(function(a,b){
return a-b;
})
arr[0];
を返します }
// Math.max を使用して配列の最大値を取得します
Array.prototype.arrSortMin =function(){
var 配列 = this;
Math.min.apply(null, array);
を返す }
alert([1,2,3,4,5,6,9,8,7,9].arrSortMin());

配列のコピー:

コードをコピーします コードは次のとおりです:
Array.prototype.copy =
function() {
Return [].concat(this);
};

配列から指定した要素のみを削除するには、1 つだけを削除できます。複数を削除したい場合は、最初に独自の処理を使用します。

コードをコピーします コードは次のとおりです:
Array.prototype.remove = function(value){
for(var i=0,len=this.length;i {
If(this[i]==値){
This.splice(i, 1);
休憩;
}
}

これを返してください;
}

2. document.loaction を操作するためのメソッドセット (庭の友人がまとめた関連メソッドをここに借用します)

コードをコピー コードは次のとおりです:

pFan.url = { //#URL
//パラメータ: 変数名、URL が空の場合、テーブルは現在のページの URL から取得されます
GetQuery: 関数 (名前, URL) {
var u = 引数[1] || window.location.search
, reg = new RegExp("(^|&)" name "=([^&]*)(&|$)")
, r = u.substr(u.indexOf("?") 1).match(reg)
;
return r != null ? r[2] : "";
}
, getHash: function (name, url) { //# ハッシュ値を取得
var u = 引数[1] || location.hash;
var reg = new RegExp("(^|&)" name "=([^&]*)(&|$)");
var r = u.substr(u.indexOf("#") 1).match(reg);
If (r != null) {
return r[2];
}
return "";
}
, parse: function (url) { //# URL を解析します
var a = document.createElement('a');
url = url || document.location.href;
a.href = url;
return {
出典: url
、プロトコル: a.protocol.replace(':', '')
、、、ホスト: a.hostname
、 、ポート: a.port
、クエリ: a.search
、 、 ファイル: (a.pathname.match(/([^/?#] )$/i) || [, ''])[1]
ハッシュ: a.hash.replace('#', '')
、 、パス: a.pathname.replace(/^([^/])/, '/$1')
、相対: (a.href.match(/tps?://[^/] (. )/) || [, ''])[1]
、セグメント: a.pathname.replace(/^//, '').split('/')
};
}
};

3. よく使われる正規表現

コードをコピー コードは次のとおりです:

pFan.regExp = { //# 一致する文字列
//それは数字ですか?整数、浮動小数点数
isNum: function (num) { //# 配列ですか
return !isNaN(num);
}
, isEmail: function (mail) {//# メールアドレスですか
return /^([a-z0-9] [_-.]?)*[a-z0-9] @([a-z0-9] [_-.]?)*[a-z0-9] .[a-z]{2,5}$/i.test(mail);
}
, isIdCard: function (card) { //# ID カードですか
return /^(d{14}|d{17})(d|[xX])$/.test(card);
}
, isMobile: function (mobile) { //# 携帯電話ですか
return /^0*1d{10}$/.test(mobile);
}
, isQQ: function (qq) { //# QQ ですか
return /^[1-9]d{4,10}$/.test(qq);
}
, isTel: function (tel) { //# 電話番号ですか
return /^d{3,4}-d{7,8}(-d{1,6})?$/.text(tel);
}
, isUrl: function (url) { //# URL ですか
return /https?://[a-z0-9.-]{1,255}.[0-9a-z-]{1,255}/i.test(url);
}
, isColor: function (color) { //# 16 進数の色ですか
return /#([da-f]{3}){1,2}$/i.test(color);
}
//@id: ID カード、
// @now: 現在時刻 例: new Date('2013/12/12')、'2013/12/12'
// @age: 許可される年齢
, isAdult: function (id,allowAge,now) { //# 年齢が成人かどうか
var age = 0 // ユーザーの年、月、日
, , nowDate = 0 //現在の年、月、日
;
allowAge = parseFloat(allowAge) || 18;
now = typeof now == 'string' ? new Date(now) : (now || new Date());

if (!this.isIdCard(id)) {
return false;
}
//15桁のIDカード
If (15 == id.length) {
年齢 = '19' id.slice(6, 6);
} else {
年齢 = id.slice(6, 14);
}
//型変換 Integer
年齢 = ~~年齢;
nowDate = ~~(Tydic.date.format('YYYYMMDD', now));
//年齢を比較
If (nowDate - age return false;
}
true を返します;
}
//浮動小数点数
, isFloat: function (num) { //# 浮動小数点数かどうか
return /^(([1-9]d*)|(d .d )|0)$/.test(num);
}
//正の整数
, isInt: function (num) { //# 正の整数かどうか
return /^[1-9]d*$/.test(num);
}
//すべて漢字かどうか
, is Chinese: function (str) { //# すべて中国語の文字です
return /^([u4E00-u9FA5]|[uFE30-uFFA0]) $/gi.test(str);
}
};

4. className

を操作するためのメソッドセット

コードをコピー コードは次のとおりです:

PFan.conClass = {
HasClass:function(){
return ele.className.match(new RegExp('(\s|^)' cls '(\s|$)'); }、
AddClass:function(){
If (!hasClass(ele,cls)) ele.className = " " cls; }、
removeClass:function(){
If (hasClass(ele,cls)) {
var reg = new RegExp('(
\s|^)' cls '(\s|$)'
); ele.className=ele.className.replace(reg,' ');                                                                                 } }


5. 文字列操作メソッド

コードをコピー

コードは次のとおりです:

pFan.string = { //# 文字列
codeHtml: function (content) { //# HTML 文字をエスケープします
return this.replace(content, {
'&': "&"
、'"': """
, "'": '''
、、、'<': "<"
、 、 '>': ">"
, ' ': " "
, 't': " "
, '(': "("
、 、 ')': ")"
、、、'*': "*"
, ' ': "+"
, ',': ","
、 、 '-': "-"
、 、 '.': "."
, , '/': "/"
, '?': "?"
、 、 '\': "\"
、 、 'n': "
"
});
}
//文字列を繰り返します
、repeat: function (word, length, end) { //# 文字列を繰り返します
end = end || 末尾に追加
長さ = ~~length;
return new Array(length * 1 1).join(word) '' end;
}
// プレフィックス
を追加します , addPre: function (pre, word, size) { //# 完了。たとえば、数字の前に 0
を追加します。 前 = 前 || '0';
サイズ = parseInt(サイズ) ||
word = String(word || '');
var length = Math.max(0, size - word.length);
return this.repeat(pre, length, word);
}
//両側のスペースを削除
、trim: function (text) { //# 両側のスペースを削除します
return (text || '').replace(/^s |s$/, '');
}
//左のスペースを削除
,ltrim:function(){
return s.replace( /^(s*|*)/, ""); }
//右側のスペースを削除
,rtrim:function(){
return s.replace( /(s*|*)$/, ""); }
// スクリプトの内容に戻る
,evalscript:関数 {
If(s.​​indexOf(' var p = /]*?>([^x00]*?)/ig;
var arr = [];
while(arr = p.exec(s)) {
var p1 = /]*?src="([^>]*?)"[^>]*?(reload="1")?(?:charset="([ w-] ?)")?>/i;
var arr1 = [];
arr1 = p1.exec(arr[0]);
if(arr1) {
appendscript(arr1[1], '', arr1[2], arr1[3]);
} else {
p1 = /<script>([^x00] ?)</script>/i;
arr1 = p1.exec(arr[0]);
appendscript('', arr1[2], arr1[1].indexOf('reload=') != -1);
}
}
return s;
}
// スクリプトの内容をクリア
,stripscript:function(){
return s.replace(/.*?/ig, '');
}
//文字列置換
, replace: function (str, re) { //# 文字列置換
str = str || '';
for (re の var key) {
replace(key, re[key]);
};
関数 replace(a, b) {
var arr = str.split(a);
str = arr.join(b);
};
return str;
}
, xss: function (str, type) { //# XSS エスケープ
//空のフィルター
If (!str) {
return str === 0 ? "0" : "";
}
スイッチ (タイプ) {
case "html": // HTML 文字列内の XSS をフィルターします
Return str.replace(/[&'"<>/\-x00-x09x0b-x0cx1fx80-xff]/g, function (r) {
return "" r.charCodeAt(0) ";"
}).replace(/ /g, " ").replace(/rn/g, "
").replace(/n/g, "
").replace(/ r/g, "
");
休憩;
case "htmlEp": //DOM ノード属性の XSS をフィルターします
return str.replace(/[&'"<>/\-x00-x1fx80-xff]/g, function (r) {
return "" r.charCodeAt(0) ";"
});
休憩;
case "url": // URL をフィルターします
Returnescape(str).replace(/ /g, "+");
休憩;
case "miniUrl":
return str.replace(/%/g, "%");
休憩;
case "スクリプト":
return str.replace(/[\"']/g, function (r) {
return "\" r;
}).replace(/%/g, "
\x25").replace(/n/g, "\n").replace(/r/g, "\r").replace(/x01/g, "\x01");
休憩;
ケース "reg":
return str.replace(/[\^$* ?{}.()[]]/g, function (a) {
return "\" a;
});
休憩;
デフォルト:
returnscape(str).replace(/[&'"<>/\-x00-x09x0b-x0cx1fx80-xff]/g, function (r) {
return "" r.charCodeAt(0) ";"
}).replace(/ /g, " ").replace(/rn/g, "
").replace(/n/g, "
").replace(/ r/g, "
");
休憩;
}
}
// 不適切な単語、デリケートな単語をフィルターします
//@text: フィルタリングするテキスト、タイプ: string
//@words: 機密性の高い単語、タイプ、配列、例: ['your Sister'、'I Lost'、'holy shit']
// 通常のマッチングを使用する場合、テキストの長さは 100 万、単語の長さは 100 万で、所要時間は 4 秒です。
, badWord: function (text, Words) { //# デリケートな単語のフィルタリング
text = String(text || '');
単語 = 単語 || [];
var reg = new RegExp(words.join('|'), 'g')
、、、_self = これ;
return text.replace(reg, function ($0) {
var length = String($0 || '').length;
return _self.repeat('*', length);
});
}
};

6.暗号化方式の設定

コードをコピー コードは次のとおりです:

pFan.encrypt = { //# 加密
    md5: function (words) { //# md5 哈希法算
        /*
         * 暗号化 JS 3.1.2
         * http://code.google.com/p/crypto-js
         */
        var CryptoJS = function (s, p) {
            var m = {}、l = m.lib = {}、n = function () { }、r = l.Base = {extend: function (b) { n.prototype = this; var h = 新しい n; b && h.mixIn(b); h.hasOwnProperty("init") || (h.init = function () { h.$super.init.apply(this, argument) }); h.init.prototype = h; h.$super = これ; return h }, create: function () { var b = this.extend(); b.init.apply(b, 引数); return b }, init: function () { }, mixIn: function (b) { for (var h in b) b.hasOwnProperty(h) && (this[h] = b[h]); b.hasOwnProperty("toString") && (this.toString = b.toString) }, clone: function () { return this.init.prototype.extend(this) } }, q = l.WordArray = r.extend( { init: function (b, h) { b = this.words = b []; this.sigBytes = h != p ? h : 4 * b.length }, toString: function (b) { return (b || t).stringify(this) }, concat: function (b) { var h = this.words, a = b.sigBytes; b = b.sigBytes; (j % 4) for (var g = 0; g > 2] |= (a[g >> 2] > > 24 - 8 * (g % 4) & 255) >> 32 - j) k } function l(a, k, b, h, l, j, m) { a = a (k ^ b ^ h) 1メートル; return (a << j | a >>> 32 - j) k } function n(a, k, b, h, l, j, m) { a = a (b ^ (k | ~ h)) l m; return (a << j | a >>> 32 - j) k } for (var r = CryptoJS, q = r.lib, v = q.WordArray, t = q.Hasher, q = r .algo, a = [], u = 0; 64 > u ) a[u] = 4294967296 * s.abs(s.sin(u 1)) 0; q = q.MD5 = t.extend({
                _doReset: function () { this._hash = new v.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (g, k) {
                    for (var b = 0; 16 > b; b ) { var h = k b, w = g[h]; g[h] = (w << 8 | w >>>> 24) & 16711935 | (w << 24 | w >>> 8) & 4278255360 } var b = this._hash.words, h = g[k 0], w = g[k 1], j = g[k 2]、q = g[k 3]、r = g[k 4]、s = g[k 5]、t = g[k 6]、u = g[k 7]、v = g[k 8] 、x = g[k 9]、y = g[k 10]、z = g[k 11]、A = g[k 12]、B = g[k 13]、C = g[k 14]、D = g[k 15]、c = b[0]、d = b[1]、e = b[2]、f = b[3]、c = p(c, d, e, f, h, 7 、a[0])、f = p(f、c、d、e、w、12、a[1])、e = p(e、f、c、d、j、17、a[2]) 、d = p(d, e, f, c, q, 22, a[3])、c = p(c, d, e, f, r, 7, a[4])、f = p(f 、c、d、e、s、12、a[5])、e = p(e、f、c、d、t、17、a[6])、d = p(d、e、f、c 、u、22、a[7])、c = p(c、d、e、f、v、7、a[8])、f = p(f、c、d、e、x、12、a [9])、e = p(e、f、c、d、y、17、a[10])、d = p(d、e、f、c、z、22、a[11])、c = p(c, d, e, f, A, 7, a[12])、f = p(f, c, d, e, B, 12, a[13])、e = p(e, f 、c、d、C、17、a[14])、d = p(d、e、f、c、D、22、a[15])、c = m(c、d、e、f、w 、5、a[16])、f = m(f、c、d、e、t、9、a[17])、e = m(e、f、c、d、z、14、a[18] ])、d = m(d、e、f、c、h、20、a[19])、c = m(c、d、e、f、s、5、a[20])、f = m (f, c, d, e, y, 9, a[21])、e = m(e, f, c, d, D, 14, a[22])、d = m(d, e, f 、c、r、20、a[23])、c = m(c、d、e、f、x、5、a[24])、f = m(f、c、d、e、C、9 、a[25])、e = m(e、f、c、d、q、14、a[26])、d = m(d、e、f、c、v、20、a[27]) 、c = m(c、d、e、f、B、5、a[28])、f = m(f、c、d、e、j、9、a[29])、e = m(e , f, c, d, u, 14, a[30])、d = m(d, e, f, c, A, 20, a[31])、c = l(c, d, e, f 、s、4、a[32])、f = l(f、c、d、e、v、11、a[33])、e = l(e、f、c、d、z、16、a [34])、d = l(d、e、f、c、C、23、a[35])、c = l(c、d、e、f、w、4、a[36])、f = l(f, c, d, e, r, 11, a[37])、e = l(e, f, c, d, u, 16, a[38])、d = l(d, e , f, c, y, 23, a[39])、c = l(c, d, e, f, B, 4, a[40])、f = l(f, c, d, e, h , 11, a[41])、e = l(e, f, c, d, q, 16, a[42])、d = l(d, e, f, c, t, 23, a[43] ])、c = l(c、d、e、f、x、4、a[44])、f = l(f、c、d、e、A、11、a[45])、e = l (e, f, c, d, D, 16, a[46])、d = l(d, e, f, c, j, 23, a[47])、c = n(c, d, e , f, h, 6, a[48])、f = n(f, c, d, e, u, 10, a[49])、e = n(e, f, c, d,
                                C、15、a[50])、d = n(d、e、f、c、s、21、a[51])、c = n(c、d、e、f、A、6、a[ 52])、f = n(f、c、d、e、q、10、a[53])、e = n(e、f、c、d、y、15、a[54])、d = n(d, e, f, c, w, 21, a[55])、c = n(c, d, e, f, v, 6, a[56])、f = n(f, c, d, e, D, 10, a[57])、e = n(e, f, c, d, t, 15, a[58])、d = n(d, e, f, c, B, 21, a[59])、c = n(c, d, e, f, r, 6, a[60])、f = n(f, c, d, e, z, 10, a[61] )、e = n(e、f、c、d、j、15、a[62])、d = n(d、e、f、c、x、21、a[63]); b[0] = b[0] c | 0; b[1] = b[1] d | 0; b[2] = b[2] e | 0; b[3] = b[3] f | 0
                }, _doFinalize: function () { var a = this._data, k = a.words, b = 8 * this._nDataBytes, h = 8 * a.sigBytes; k[h >>> 5] |= 128 > 9 > 24) & 16711935 | (l >> 8) & 4278255360; k[(h 64 >> 9 >> 24) & 16711935 | (b >> 8) & 4278255360; a.sigBytes = 4 * (k.length 1); this._process(); a = this._hash; k = a.単語; for (b = 0; 4 > b; b ) h = k[b], k[b] = (h >> 24) & 16711935 | (h >> 8) & 4278255360; return a }, clone: function () { var a = t.clone.call(this); a._hash = this._hash.clone(); }
を返します             }); r.MD5 = t._createHelper(q); r.HmacMD5 = t._createHmacHelper(q)
        })(数学);
        return CryptoJS.MD5(words).toString();
    }
    // sha1
    , sha1: function (words) { //# sha1 哈希算法
        var CryptoJS = function (e, m) { var p = {}, j = p.lib = {}, l = function () { }, f = j.Base = { extend: function (a) { l.prototype = これ; var c = 新しい l; a && c.mixIn(a); c.hasOwnProperty("init") || (c.init = function () { c.$super.init.apply(this, argument) }); c.init.prototype = c; c.$super = これ; return c }, create: function () { var a = this.extend(); a.init.apply(a, 引数); return a }, init: function () { }, mixIn: function (a) { for (var c in a) a.hasOwnProperty(c) && (this[c] = a[c]); a.hasOwnProperty("toString") && (this.toString = a.toString) }, clone: function () { return this.init.prototype.extend(this) } }, n = j.WordArray = f.extend( { init: function (a, c) { a = this.words = a []; this.sigBytes = c != m ? c : 4 * a.length }, toString: function (a) { return (a || h).stringify(this) }, concat: function (a) { var c = this.words, q = a.sigBytes; a = a.sigBytes; (d % 4) for (var b = 0; b > 2] |= (q[b >> 2] > 24 - 8 * (b % 4) & 255) >9         return CryptoJS.SHA1(words).toString();
    }
    // time33 哈希
    , time33: function (words) { //# time33 哈希算法
        言葉 = 言葉 || '';
        //哈希time33算法
        for (var i = 0, len =words.length, hash = 5381; i             hash = (ハッシュ         };
        ハッシュを返す & 0x7fffffff;
    }
}

7.日期方法集

复制代 代码如下:

pFan.date = {
    //戻り時間间戳
    getTimeStamp:function(){
        var timestamp=new Date().getTime();
        return timestamp.toString();
    }、
    // 時間间戳转は日期格式
    //@nSは時間です
    getLocalTime: function(nS) {
        return new Date(parseInt(nS) * 1000).toLocaleString().substr(0,17);
    }、
    //@time 、時間间、新しい日付('2013/11/10 0:12:12')
    //@pre 、星期の前缀、如:周 、星期
    //@ nums 、例:一二三四五六日
    getWeek: function (time, pre, nums) { //# 获取星期几
        時間 = 時間の種類 == '文字列' ? this.parse(time) : (time || new Date());
        前 = 前 || '星期'; //周
        数値 = 数値 || '日一二三四五六';
        return pre nums[time.getDay()];
    }、
    //@formatType : YYYY、YY、MM
    //@ time : new Date('2013/11/12')
    //@weeks : 日一二三四五六
    format: function (formatType, time,weeks) { //格式化输出力時間间
        var pre = '0',
        formatType = 用
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート