Maison  >  Article  >  interface Web  >  Résumé des points de connaissance communs des compétences js jquery_javascript

Résumé des points de connaissance communs des compétences js jquery_javascript

WBOY
WBOYoriginal
2016-05-16 16:11:311187parcourir

1. Points de connaissances communs dans le code source jquery

 1.string, une méthode de raccourci pour la conversion de type numérique

Copier le code Le code est le suivant :

// @param s est une chaîne, n est un nombre
fonction fn(obj){
//Convertir en type String
var s = obj "";
//Convertir en type numérique
var n = obj;
>

Partagez un exemple d'interview :

//Ajouter convertira automatiquement ce qui suit en chaîne
"64" 4="644"
//La soustraction le convertira automatiquement en nombre
"64"-4=60

 Conversion de type 2.bool

!!obj, convertissez-le en type booléen

Copier le code Le code est le suivant :

alert(!!0) //Le résultat est faux
alert(!!33dd") //Le résultat est vrai

!obj, prends le type booléen opposé

Copier le code Le code est le suivant :

alert(!0) //Le résultat est vrai
alert(!"222333") //Le résultat est faux

 3. La différence entre === et ==

=== est une égalité stricte et n'effectuera pas de conversion de type, tandis que == n'est pas une égalité stricte et effectuera une conversion de type. Certains livres js recommandent aux développeurs de ne jamais utiliser == ou !=.

Mais dans le code source de jquery, il existe des situations où "==" ou "!=" est utilisé - pour juger undéfini et nul.

Copier le code Le code est le suivant :

//Le jugement ici exclut que obj soit nul et obj non défini
si(obj != null){
>

 4. Vérifiez si obj est un objet fenêtre

Copier le code Le code est le suivant :

//null == window.null est vrai
la fonction estFenêtre(obj){
Retourner obj != null && obj == window.obj;
>

 5.|| et && conseils d'utilisation

Copier le code Le code est le suivant :

//Exemple var aa=5; name = aa || {} ; alert(name) alors le nom est 55
this.name = name || {} //Si la valeur du nom existe, la valeur est nom, sinon elle est {}
//Exemple var aa=5; name = aa && {}; alert(name) alors name est {}, car aa vaut 5, c'est vrai s'il n'est pas 0
this.name = bool && [] //Si bool est vrai, la valeur est [], sinon c'est bool

Exemple classique :

Copier le code Le code est le suivant :

( window.foo || ( window.foo = "bar" ) );
alert(window.foo); //barre contextuelle
// Pourquoi le résultat final est-il une barre ? En fait, elle peut être considérée comme une barre indéfinie || Le résultat doit être une barre

 6. La différence entre setTimeout(fn,0) et setTimeout(fn)

SetTimeout(fn,0) et setTimeout(fn) sont tous deux des exécutions retardées, mais setTimeout(fn) a un délai plus long que setTimeout(fn,0), par exemple

Copier le code Le code est le suivant :

         fonction fn(){
            var data = new Date();
pour(var i=0;i<=1000;i ){
Si(i==1000){
console.log("fn=" data.getTime());
                }
            }
>
         fonction fn1(){
            var data = new Date();
pour(var i=0;i<=1000;i ){
Si(i==1000){
console.log("fn1=" data.getTime());
                }
            }
>
​​​​ setTimeout(fn,0),
​​​​ setTimeout(fn1);

Résultat :

7. Déterminez s'il s'agit d'une valeur numérique

Copier le code Le code est le suivant :

la fonction estNumérique(obj){
return !isNaN(parseFloat(obj)) && isFinite(obj);
>

8. Déterminez s'il s'agit d'un objet vide

Copier le code Le code est le suivant :

fonction isEmptyObject(){
nom de la variable ;
//Traverse si l'objet n'est pas vide et retourne
pour (nom en obj) {
         return false ;
>
Renvoie vrai ;
>

 9. Type d'objet de détection

Détectez le type d'objet obj et le type de retour. Utilisez Object.prototype.toString() pour déterminer le type. Cependant, il existe un problème de compatibilité avec les versions inférieures d'IE, donc {}.toString est utilisé pour surveiller, et le type d'objet obj. le retour est [object Array],[object Object],[object Function]

Copier le code Le code est le suivant :

//Type de jugement
la fonction estType(type){
Fonction de retour(o){
           return Object.prototype.toString.call(o) === '[objet ' type ']';
>
>
var isString = isType("String");
var isObject = isType("Object");
var isArray = isType("Array");
isString("Je m'appelle Barret Lee.");
estArray([1,2,3]);
estObjet({});

 10. Le tour de magie du trim pour supprimer les espaces dans jquery

Copier le code Le code est le suivant :

//Équivalent à if (String.prototype.trim && « uFEFFxA0″.trim() !== « ») Les navigateurs avancés prennent déjà en charge la méthode native String trim, mais pFan ne peut pas non plus analyser les espaces pleine largeur afin de l'éviter. Un jugement supplémentaire est donc ajouté : "uFEFFxA0".trim() !== ""
vart core_version = "1.0", core_trim = core_version.trim; fonction trim(){
Core_trim && !core_trim.call("uFEFFxA0") ?
fonction (texte) {
                                      return text == null ?
"" :
Core_trim.Call (text); // Ici, d'après ma compréhension, cela devrait être "" ".trim.call (texte). Ce n'est pas compris de le convertir en" 1.1.0 ".trim.ct ( texte)
>                                                                                                                                       
                                                      // Les navigateurs avancés prennent déjà en charge la méthode native de découpage de chaîne. Si le navigateur ne la prend pas en charge, utilisez
. fonction (texte) {
Var Espace blanc = "[\ x20 \ t \ r \ n \ n \ f]",
                       rtrim = new RegExp("^" espace blanc " |((?:^|[^\\])(?:\\.)*)" espace blanc " $", "g");
                                      return text == null ?
"" :
(texte "").replace(rtrim, "");
                    },
                            // La fonction nodeName consiste à obtenir le nom du nœud dom ou à déterminer si son nom correspond aux paramètres entrants
nodeName : function(elem,name){
//Sous IE, le nodeName du nœud DOM est en lettres majuscules, comme DIV
                                  return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
                }
>


 

11. Détecter si un tableau ou un type de tableau contient une valeur entrante dans jquery

Copier le code Le code est le suivant :

/**
Vérifiez si la valeur transmise existe dans le tableau, si elle existe, renvoyez la position de la valeur, sinon, renvoyez -1.
*elem spécifie la valeur à récupérer.
*arr tableau
*i Paramètre entier facultatif. Spécifie la position dans le tableau pour commencer la recherche. Ses valeurs légales vont de 0 à arr.length - 1. Si ce paramètre est omis, la recherche démarrera à partir du premier élément du tableau.
​*/
fonction dansArray(elem, arr, i){
varlen;
Si (arr) {
//Si le navigateur prend en charge Array, il possède la méthode indexOf
Si ([].indexOf) {
                return [].indexOf.call(arr, elem, i);
>
        len = arr.length;
//Lorsque i est un nombre négatif, commencez l'indexation à partir de la position de len i à la fin du tableau
//Comprenez que cela est divisé en deux parties i = i ? (i < 0 ? Math.max(0, len i) : i) : 0;, i=i est vrai, exécutez (i < 0 ? Math. max (0, len i) : i), exécute de toute façon i=0
je = je ? je < 0 ? Math.max(0, len i) : je : 0;
pour (; je < len; je ) {
// La double vérification empêche les tableaux comme celui-ci ar = [];ar[1]=1;ar[0] = 0 in ar =false;a[0]===undefined
                                                                                                                                                                                           Si (i in arr && arr[i] === elem) {
                   retourner i ;
            }
>
>
Retour -1 ;
>

2. Points de connaissances communs sur la chaîne de prototypes en JavaScript

 Méthode 1.hasOwnProperty()

Utilisez la méthode hasOwnProperty() pour détecter si une propriété existe dans une instance ou dans un prototype. Cette méthode hérite de Object et ne retournera true que si la propriété donnée existe dans l'instance d'objet.

Copier le code Le code est le suivant :
Fonction Personne(){
Cet.age=25;
This.job="web";
>
Personne.prototype={
          nom : 'pingfan',
          sayName:function(){
alert(this.name);
                }
>
var personne1=nouvelle Personne();
//Depuis le constructeur, détecte les attributs et renvoie true
alert(person1.hasOwnProperty("age"));
//Depuis l'attribut prototype, renvoie false
alert(person1.hasOwnProperty("name"));
Person1.name='ping';
//À partir des attributs de l'instance, renvoie true
alert(person1.hasOwnProperty("name"));

2. Assurez-vous qu'une seule instance via instanceOf

Copier le code Le code est le suivant :
fonction shiCha (opt){
//Instance une seule fois
Si( !(cette instance de shiCha)){
          renvoyer le nouveau shiCha (opt);
                                                                        >
var shicha = shiCha();

 3.Array.prototype.slice.call(arguments) en javascript 

Nous voyons généralement Array.prototype.slice.call(arguments,1) ou Array.prototype.slice.call(arguments), et sommes un peu confus. En fait, nous utilisons simplement slice() dans Array.prototype pour. convertir les arguments Transformez-le en tableau, et il est plus pratique de travailler avec ce tableau. Le deuxième paramètre est la valeur d'index, en commençant par la valeur d'index et en la transformant en tableau, par exemple Array.prototype.call("22223). ",2) et Array.prototype.call([ 1,2,3,4],2), à partir de la deuxième chaîne.

Copier le code Le code est le suivant :

fonction sliArray(array){
//La sortie va de l'index 1 à l'index 3
                 return Array.prototype.slice.call(array,1,3);
>
alert(sliArray([1,2,3,4,5,6])) //Le résultat est 2,3

 4. Utilisez l'objet vide F pour obtenir l'héritage d'objet, qui est le plus efficace

Copier le code Le code est le suivant :

//Utilisez des objets vides comme média pour le meilleur effet d'héritage
fonction hériter(C,P){
         var F=function(){};
          F.protototype = P.prototype;
C.prototype = nouveau F();
C.prototype.constructor = C;
>

3. Ensemble de méthodes couramment utilisées en javascript
1. Méthodes courantes de fonctionnement des tableaux

Déduplication de baie :

Copier le code Le code est le suivant :

//Prototype de déduplication de baie
Array.prototype.unqie = function(){
var arr = ceci, len=this.length, obj={}, newArr=[]; ​​​​​pendant que(len--){
Si(obj[ arr[len] ] !== arr[len]){
                                                                                                                                     obj[arr[len]] = arr[len];                                                                                                                                                       }
return newArr.reverse();
>



Obtenez la valeur maximale dans le tableau :

Copier le code Le code est le suivant : Array.prototype.arrMax=function(){
            var arr=this, len=this.length,max=arr[0];
pour(var i=1;i Si(max                                                                                                                                                                                                                                       }                 }
       retour maximum ;
}
//Obtenir la valeur maximale du tableau via sort
​Array.prototype.arrMax=function(){
  var arr=this;
arr.sort(fonction(a,b){
   retourner a-b ;
  })
Retourner arr[arr.length-1];
}
//Utilisez Math.max pour obtenir la valeur maximale du tableau
Array.prototype.arrMax =fonction(){
var tableau = ceci;
Renvoie Math.max.apply(null, array);
>
alert([1,2,3,4,5,6,9,8,7,9].arrMax());

Obtenez la valeur minimale dans le tableau :

Copier le code Le code est le suivant :

//La plus petite valeur du tableau
Array.prototype.arrMin=fonction(){
            var arr=this, len=this.length,min=arr[0];
pour(var i=1;i Si(min>arr[i]){
Min=arr[i];
                                                                                                          }                 }
       retour min ;
}
//Obtenir la plus petite valeur du tableau via sort
Array.prototype.arrSortMin=function(){
  var arr=this;
arr.sort(fonction(a,b){
   retourner a-b ;
  })
Retourner arr[0];
>
//Utilisez Math.max pour obtenir la valeur maximale du tableau
Array.prototype.arrSortMin =function(){
var tableau = ceci;
Renvoie Math.min.apply(null, array);
>
alert([1,2,3,4,5,6,9,8,7,9].arrSortMin());

Copier le tableau :

Copier le code Le code est le suivant :
Array.prototype.copy =
fonction() {
Retourner [].concat(this);
};

Pour supprimer uniquement les éléments spécifiés du tableau, vous ne pouvez en supprimer qu'un seul. Si vous souhaitez en supprimer plusieurs, utilisez d'abord le traitement unique :

Copier le code Le code est le suivant :
Array.prototype.remove = fonction (valeur){
pour(var i=0,len=this.length;i {
Si(this[i]==valeur){
This.splice(i, 1);
             pause ;
>
>
 
Renvoyez ceci ;
>

2. Méthode définie pour l'exploitation document.loaction (les méthodes pertinentes résumées par les amis du jardinage sont empruntées ici)

Copier le code Le code est le suivant :

pFan.url = { //#URL
//Paramètres : nom de la variable, si l'url est vide, le tableau sera extrait de l'url de la page courante
GetQuery : fonction (nom, url) {
        var u = arguments[1] || window.location.search
​ ​ ​ , reg = new RegExp("(^|&)" nom "=([^&]*)(&|$)")
          , r = u.substr(u.indexOf("?") 1).match(reg)
;
          return r != null r[2] : "";
>
, getHash : function (name, url) { //# Obtenir la valeur de hachage
        var u = arguments[1] || location.hash;
          var reg = new RegExp("(^|&)" name "=([^&]*)(&|$)");
         var r = u.substr(u.indexOf("#") 1).match(reg);
Si (r != null) {
                return r[2];
>
         return "";
>
, analyser : function (url) { //# Analyser l'URL
         var a = document.createElement('a');
 url = url || document.location.href;
         a.href = url;
         revenir {
                source : url
​ ​ , protocole : a.protocol.replace(':', '')
, , hôte : a.hostname
, , port : a.port
​​​​​ , requête : a.search
, , fichier : (a.pathname.match(/([^/?#] )$/i) || [, ''])[1]
​ ​ , hachage : a.hash.replace('#', '')
, , chemin : a.pathname.replace(/^([^/])/, '/$1')
          , relatif : (a.href.match(/tps?://[^/] (. )/) || [, ''])[1]
​​​​​​ , segments : a.pathname.replace(/^//, '').split('/')
        };
>
};

 3. Expressions régulières couramment utilisées

Copier le code Le code est le suivant :

pFan.regExp = { //# Correspondance de chaîne
//Est-ce un nombre ? Nombre entier à virgule flottante
isNum : function (num) { //# Est-ce un tableau
         return !isNaN(num);
>
, isEmail : fonction (mail) {//# Est-ce une adresse email
retourner /^([a-z0-9] [_-.]?)*[a-z0-9] @([a-z0-9] [_-.]?)*[a-z0-9] .[a-z]{2,5}$/i.test(mail);
>
, isIdCard : function (card) { //# Est-ce une carte d'identité
          return /^(d{14}|d{17})(d|[xX])$/.test(card);
>
, isMobile : function (mobile) { //# Est-ce un téléphone mobile
          return /^0*1d{10}$/.test(mobile);
>
, isQQ : function (qq) { //# Est-ce QQ
           return /^[1-9]d{4,10}$/.test(qq);
>
, isTel : function (tel) { //# Est-ce un numéro de téléphone
           return /^d{3,4}-d{7,8}(-d{1,6})?$/.text(tel);
>
, isUrl : function (url) { //# Est-ce une URL
          return /https?://[a-z0-9.-]{1,255}.[0-9a-z-]{1,255}/i.test(url);
>
, isColor : function (color) { //# Est-ce une couleur hexadécimale
          return /#([da-f]{3}){1,2}$/i.test(color);
>
//@id : carte d'identité,
// @now : heure actuelle telle que : new Date('2013/12/12'), '2013/12/12'
// @age : Âge autorisé
, isAdult : function (id, AllowAge, now) { //# Si l'âge est adulte
        var age = 0 // Année, mois et jour de l'utilisateur
, , nowDate = 0 //Année, mois et jour en cours
;
​​​​​allowAge = parseFloat(allowAge) || 18;
now = typeof now == 'string' ? new Date(now) : (now || new Date());

if (!this.isIdCard(id)) {
              return false ;
>
//Carte d'identité à 15 chiffres
Si (15 == id.length) {
Âge = '19' id.slice(6, 6);
         } autre {
Âge = id.slice(6, 14);
>
//Conversion de type Entier
Âge = ~~âge ;
nowDate = ~~(Tydic.date.format('AAAAMMJJ', maintenant));
​​​​ //Comparez les âges
Si (nowDate - age               return false ;
>
        return true ;
>
//Numéro à virgule flottante
, isFloat : function (num) { //# Est-ce un nombre à virgule flottante
           return /^(([1-9]d*)|(d .d )|0)$/.test(num);
>
//Entier positif
, isInt : function (num) { //# Est-ce un entier positif
          return /^[1-9]d*$/.test(num);
>
//Que ce soient tous des caractères chinois
, isChinese : function (str) { //# Est constitué de tous les caractères chinois
          return /^([u4E00-u9FA5]|[uFE30-uFFA0]) $/gi.test(str);
>
};

 4. Méthode définie pour l'exploitation className

Copier le code Le code est le suivant :

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


 5. Méthodes de manipulation de chaînes

Copier le code Le code est le suivant :

pFan.string = { //# chaîne
codeHtml : function (contenu) { //# Caractères HTML d'échappement
          renvoie this.replace(content, {
             '&' : "&"
        , '"' : """
        , "'": '''
, , '<' : "<"
, , '>' : ">"
        , ' ' : " 
        , 't' : " "
        , '(' : "("
, , ')' : ")"
, , '*' : "*"
        , ' ' : "+"
        , ',' : ","
, , '-' : "-"
, , '.' : "."
, , '/' : "/"
        , '?' : "?"
, , '\' : "\"
, , 'n' : "
"
        });
>
//Répéter la chaîne
, répéter : fonction (mot, longueur, fin) { //# Répéter la chaîne
          end = end || //Ajouter à la fin
         longueur = ~~longueur;
            return new Array(length * 1 1).join(word) '' end;
>
//Ajouter un préfixe
, addPre : function (pré, mot, taille) { //# Complete. Par exemple, ajoutez 0
avant un nombre Pré = pré || '0';
taille = parseInt(taille) || 0;
           word = String(mot || '');
      var longueur = Math.max(0, taille - mot.longueur);
          return this.repeat(pre, length, word);
>
//Supprimer les espaces des deux côtés
, trim: function (text) { //# Supprimer les espaces des deux côtés
           return (texte || '').replace(/^s |s$/, '');
>
//Supprimer l'espace de gauche
,ltrim:fonction(){
           return s.replace( /^(s*|*)/, ""); >
//Supprime l'espace à droite
,rtrim:function(){
           return s.replace( /(s*|*)$/, ""); >
//Retour au contenu du script
,evalscript:fonction(s) {
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]);
               } autre {
p1 = /([^x00] ?)/i;
                 arr1 = p1.exec(arr[0]);
                 appendscript('', arr1[2], arr1[1].indexOf('reload=') != -1);
            }
>
        return s;
>
//Effacer le contenu du script
,stripscript:fonction(){
           return s.replace(/.*?/ig, '');
>
//Remplacement de chaîne
, remplacer : function (str, re) { //# Remplacement de chaîne
          str = str || pour (var clé en re) {
               replace(key, re[key]);
        };
         fonction remplacer(a, b) {
            var arr = str.split(a);
             str = arr.join(b);
        };
         return str;
>
, xss : function (str, type) { //# échappement XSS
//Filtre vide
Si (!str) {
               return str === 0 ? "0" : "";
>
commutateur (type) {
               case "html": //Filtrer XSS dans une chaîne html
Renvoie str.replace(/[&'"<>/\-x00-x09x0b-x0cx1fx80-xff]/g, fonction (r) {
                         return "" r.charCodeAt(0) ";"
}).replace(/ /g, " ").replace(/rn/g, "
").replace(/n/g, "
").replace(/ r/g, "
");
                 pause ;
​​​​​​​ case "htmlEp": //Filtre XSS dans les attributs du nœud DOM
                      return str.replace(/[&'"<>/\-x00-x1fx80-xff]/g, fonction (r) {
                         return "" r.charCodeAt(0) ";"
                });
                 pause ;
              case "url": //Filtrer l'url
Retour escape(str).replace(/ /g, "+");
                 pause ;
            cas "miniUrl":
                     return str.replace(/%/g, "%");
                 pause ;
            cas "script":
                    return str.replace(/[\"']/g, function (r) {
                       return "\" r;
}).replace(/%/g, "
\x25").replace(/n/g, "\n").replace(/r/g, "\r").replace(/x01/g, "\x01");                  pause ;
cas "reg":
                      return str.replace(/[\^$* ?{}.()[]]/g, fonction (a) {
                       return "\" a;
                });
                 pause ;
                 par défaut :
                   return escape(str).replace(/[&'"<>/\-x00-x09x0b-x0cx1fx80-xff]/g, fonction (r) {
                         return "" r.charCodeAt(0) ";"
}).replace(/ /g, " ").replace(/rn/g, "
").replace(/n/g, "
").replace(/ r/g, "
");
                 pause ;
>
>
// gros mots, filtrer les mots sensibles
//@text : le texte à filtrer, tapez : string
//@mots : mots sensibles, type, tableau, tels que : ['ta sœur', 'j'ai perdu', 'putain de merde']
// Si vous utilisez une correspondance régulière, la longueur du texte est de 1 million, la longueur des mots est de 1 million et cela prend 4 secondes !
, badWord : function (texte, mots) { //# Filtrage des mots sensibles
         text = String(texte || '');
mots = mots || [];
          var reg = new RegExp(words.join('|'), 'g')
, , _self = ceci ;
           return text.replace(reg, function ($0) {
            var length = String($0 || '').length;
               return _self.repeat('*', length);
        });
>
};

 6. Méthode de cryptage définie

Copier le code Le code est le suivant :

pFan.encrypt = { //# 加密
    md5 : fonction (mots) {  //# md5 哈希算法
        /*
         * Crypto-JS 3.1.2
         * http://code.google.com/p/crypto-js
         */
        var CryptoJS = fonction (s, p) {
            var m = {}, l = m.lib = {}, n = function () { }, r = l.Base = { extend : function (b) { n.prototype = this ; var h = nouveau n ; b && h.mixIn(b); h.hasOwnProperty("init") || (h.init = function () { h.$super.init.apply(this, arguments) }); h.init.prototype = h; h.$super = ceci ; return h }, create: function () { var b = this.extend(); b.init.apply(b, arguments); 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.words, j = this.sigBytes b = b.sigBytes; (j % 4) pour (var g = 0; g < b; g ) h[j g >>> 2] |= (a[g >>> 2] >>> 24 - 8 * (g % 4) & 255) << 24 - 8 * ((j g) % 4) sinon si (65535 < a.length) pour (g = 0; g < b; g = 4) h[j g >>> 2] = a[g >> 2]; sinon h.push.apply(h, a); : function () { var b = this.words, h = this.sigBytes; b[h >> 2] &= 4294967295 << s.ceil(h / 4) }, clone : function () { var b = r.clone.call(this); b.words = this.words.slice(0); ) { pour (var h = [], a = 0; un &Lt ; b; a = 4) h.push(4294967296 * s.random() | 0); return new q.init(h, b) } }), v = m.enc = {}, t = v.Hex = { stringify: function (b) { var a = b.words; b = b.sigBytes ; pour (var g = [], j = 0; j < b; j ) { var k = a[j >>> 2] >>> 24 - 8 * (j % 4) & 255 ; g.push((k >>> 4).toString(16)); g.push((k & 15).toString(16)) } return g.join("") }, analyser : function (b) { for (var a = b.length, g = [], j = 0 ; j &Lt ; un j = 2) g[j > ;> ; 3] |= parseInt(b.substr(j, 2), 16) << 24 - 4 * (j % 8) ; return new q.init(g, a / 2) } }, a = v.Latin1 = { stringify: function (b) { var a = b.words; b = b.sigBytes ; pour (var g = [], j = 0; j < b; j ) g.push(String.fromCharCode(a[j >>> 2] >>> 24 - 8 * (j % 4) et 255)); return g.join("") }, analysez : function (b) { for (var a = b.length, g = [], j = 0; j < a; j ) g[j >>> ; 2] |= (b.charCodeAt(j) & 255) << 24 - 8 * (j % 4) ; return new q.init(g, a) } }, u = v.Utf8 = { stringify: function (b) { try { return decodeURIComponent(escape(a.stringify(b))) } catch (g) { throw Erreur ("Données UTF-8 mal formées"); } }, analyser : function (b) { return a.parse(unescape(encodeURIComponent(b))) } },
                g = l.BufferedBlockAlgorithm = r.extend({ reset: function () { this._data = new q.init; this._nDataBytes = 0 }, _append: function (b) { "string" == typeof b && (b = u.parse(b)); this._data.concat(b); this._nDataBytes = b.sigBytes }, _process : function (b) { var a = this._data, g = a.words, j = a .sigBytes, k = this.blockSize, m = j / (4 * k), m = b.ceil(m) : s.max((m | 0) - this._minBufferSize, 0); * k; j = s.min(4 * b, j); si (b) { pour (var l = 0; l < b; l = k) this._doProcessBlock(g, l); splice(0, b); a.sigBytes -= j } return new q.init(l, j) }, clone : function () { var b = r.clone.call(this); _data.clone(); return b }, _minBufferSize: 0 }); l.Hasher = g.extend({ cfg : r.extend(), init : function (b) { this.cfg = this.cfg.extend(b); this.reset() }, reset : function () { g.reset.call(this); this._doReset() }, mise à jour : function (b) { this._append(b); this._process(); return this }, finalize : function (b) { b && this ._append(b); return this._doFinalize() }, blockSize : 16, _createHelper : function (b) { return function (a, g) { return (new b.init(g)).finalize(a) } } , _createHmacHelper : function (b) { return function (a, g) { return (new k.HMAC.init(b, g)).finalize(a) } } }); var k = m.algo = {}; retourne m
        }(Mathématiques);
        (fonction(s) {
            fonction p(a, k, b, h, l, j, m) { a = a (k & b | ~k & h) l m; return (a << j | a >>> 32 - j) k } fonction m(a, k, b, h, l, j, m) { a = a (k & h | b & ~h) je m; return (a << j | a >>> 32 - j) k } fonction l(a, k, b, h, l, j, m) { a = a (k ^ b ^ h) je m; return (a << j | a >>> 32 - j) k } fonction n(a, k, b, h, l, j, m) { a = a (b ^ (k | ~ h)) je m; return (a << j | a >>> 32 - j) k } pour (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) {
                    pour (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 , une[0]), f = p(f, c, ré, e, w, 12, une[1]), e = p(e, f, c, ré, j, 17, une[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, ré, 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, une[23]), c = m(c, ré, e, f, x, 5, une[24]), f = m(f, c, ré, e, C, 9 , une[25]), e = m(e, f, c, d, q, 14, une[26]), d = m(d, e, f, c, v, 20, une[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, une[59]), c = n(c, ré, e, f, r, 6, une[60]), f = n(f, c, ré, e, z, 10, une[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] ré | 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 ≪≪ 24 heures % 32 ; var l = s.étage(b / 4294967296); k[(h 64 >>> 9 << 4) 15] = (l << 8 | l >>> 24) & 16711935 | (l << 24 | l >>> 8) & 4278255360 ; k[(h 64 >>> 9 << 4) 14] = (b << 8 | b >>> 24) & 16711935 | (b << 24 | b >>> 8) & 4278255360 ; a.sigBytes = 4 * (k.longueur 1); this._process(); a = this._hash; k = a.mots ; pour (b = 0 ; 4 > b; b ) h = k[b], k[b] = (h << 8 | h >>> 24) & 16711935 | (h << 24 | h >>> 8) & 4278255360 ; return a }, clone : function () { var a = t.clone.call(this); a._hash = this._hash.clone(); renvoyer un }
            }); r.MD5 = t._createHelper(q); r.HmacMD5 = t._createHmacHelper(q)
        })(Mathématiques);
        retourner CryptoJS.MD5(words).toString();
    >
    // sha1
    , sha1 : fonction (mots) { //# sha1  哈希算法
        var CryptoJS = fonction (e, m) { var p = {}, j = p.lib = {}, l = fonction () { }, f = j.Base = { étendre : fonction (a) { l.prototype = ceci; var c = nouveau l; a && c.mixIn(a); c.hasOwnProperty("init") || (c.init = function () { c.$super.init.apply(this, arguments) }); c.init.prototype = c; c.$super = ceci ; return c }, create: function () { var a = this.extend(); a.init.apply(a, arguments); 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.words, d = this.sigBytes; (d % 4) pour (var b = 0; b < a; b ) c[d b >>> 2] |= (q[b >>> 2] >>> 24 - 8 * (b % 4) & 255) << 24 - 8 * ((d b) % 4) sinon si (65535 < q.length) pour (b = 0; b < a; b = 4) c[d b >>> 2] = q[b >> 2]; sinon c.push.apply(c, q); : function () { var a = this.words, c = this.sigBytes; a[c >> 2] &= 4294967295 << e.ceil(c / 4) }, clone : function () { var a = f.clone.call(this); a.words = this.words.slice(0); return a }, random : function (a); ) { pour (var c = [], b = 0; b &Lt ; un; b = 4) c.push(4294967296 * e.random() | 0); return new n.init(c, a) } }), b = p.enc = {}, h = b.Hex = { stringify: function (a) { var c = a.words; a = a.sigBytes ; pour (var b = [], d = 0; d < a; d ) { var f = c[d >>> 2] >>> 24 - 8 * (d % 4) & 255 ; b.push((f >>> 4).toString(16)); b.push((f & 15).toString(16)) } return b.join("") }, analyser : function (a) { for (var c = a.length, b = [], d = 0 ; d &Lt ; c = 2) b[d > ;> ; 3] |= parseInt(a.substr(d, 2), 16) << 24 - 4 * (d% 8); return new n.init(b, c / 2) } }, g = b.Latin1 = { stringify: function (a) { var c = a.words; a = a.sigBytes ; pour (var b = [], d = 0; d < a; d ) b.push(String.fromCharCode(c[d >>> 2] >>> 24 - 8 * (d % 4) et 255)); return b.join("") }, analysez : function (a) { for (var c = a.length, b = [], d = 0; d < c; d ) b[d >>> ; 2] |= (a.charCodeAt(d) & 255) << 24 - 8 * (d% 4); return new n.init(b, c) } }, r = b.Utf8 = { stringify: function (a) { try { return decodeURIComponent(escape(g.stringify(a))) } catch (c) { throw Erreur ("Données UTF-8 mal formées"); } }, analyser : function (a) { return g.parse(unescape(encodeURIComponent(a))) } }, k = j.BufferedBlockAlgorithm = f.extend({ reset: function () { this._data = new n. init; this._nDataBytes = 0 }, _append : function (a) { "string" == typeof a && (a = r.parse(a)); this._data.concat(a); sigBytes }, _process : function (a) { var c = this._data, b = c.words, d = c.sigBytes, f = this.blockSize, h = d / (4 * f), h = a ? .ceil(h) : e.max((h | 0) - this._minBufferSize, 0); a = h * f; g = 0; g < g = f) this._doProcessBlock(b, g); g = b.splice(0, a); }, clone : function () { var a = f.clone.call(this); a._data = this._data.clone(); return a }, _minBufferSize : 0 }); j.Hasher = k.extend({ cfg : f.extend(), init : function (a) { this.cfg = this.cfg.extend(a); this.reset() }, reset : function () { k.reset.call(this); this._doReset() }, mise à jour : function (a) { this._append(a); this._process(); return this }, finalize : function (a) { a && this ._append(a); return this._doFinalize() }, blockSize : 16, _createHelper : function (a) { return function (c, b) { return (new a.init(b)).finalize(c) } } , _createHmacHelper : function (a) { return function (b, f) { return (new s.HMAC.init(a, f)).finalize(b) } } }); var s = p.algo = {}; return p }(Math);
        (function () { var e = CryptoJS, m = e.lib, p = m.WordArray, j = m.Hasher, l = [], m = e.algo.SHA1 = j.extend({ _doReset : function ( ) { this._hash = new p.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock : function (f, n) { for (var b = this._hash.words, h = b[0 ], g = b[1], e = b[2], k = b[3], j = b[4], a = 0 ; a a ) { si (16 > ; a) l [une] = f[n une] | 0; sinon { var c = l[une - 3] ^ l[une - 8] ^ l[une - 14] ^ l[une - 16]; ≪≪ 1 | c >> 31 } c = (h << 5 | h >> 27) j l[a]; & e | ~g & k) 1518500249) : 40 > ) : c ((g ^ e ^ k) - 899497514 ); j = k = e = g << [0] = b[0] h | 0; b[1] = b[1] g | ; b[4] = b[4] j | 0 }, _doFinalize : function () { var f = this._data, e = f.words, b = 8 * this._nDataBytes, h = 8 * f.sigBytes; e[h >>> 5] |= 128 ≪≪ 24 heures % 32 ; e[(h 64 >>> 9 << 4) 14] = Math.floor(b / 4294967296); e[(h 64 >>> 9 ≪≪ 4) 15] = b; f.sigBytes = 4 * e.longueur ; this._process(); renvoie this._hash }, clone : function () { var e = j.clone.call(this); e._hash = this._hash.clone(); retourner e } }); e.SHA1 = j._createHelper(m); e.HmacSHA1 = j._createHmacHelper(m) })();
        return CryptoJS.SHA1(words).toString();
    >
    // time33 哈希
    , time33 : function (mots) { //# time33 哈希算法
        mots = mots || '';
        //哈希time33算法
        pour (var i = 0, len = mots.longueur, hash = 5381; i < len; i) {
            hash = (hash << 5) mots.charAt(i).charCodeAt();
        };
        retourner le hachage & 0x7fffffff;
    >
>

  7.日期方法集

复制代码 代码如下 :

pFan.date = {
    //返回时间戳
    getTimeStamp:fonction(){
        var timestamp=new Date().getTime();
        return timestamp.toString();
    },
    //时间戳转为日期格式
    //@nS为时间戳
    getLocalTime : fonction (nS) { 
        return new Date(parseInt(nS) * 1000).toLocaleString().substr(0,17);
    },
    //@time , 时间 , 如 new Date('2013/11/10 0:12:12')
    //@pre , 星期的 前缀,如:周 ,星期
    //@ nums ,如:一二三四五六日
    getWeek : fonction (heure, pré, nombres) { //# 获取星期几
        heure = type d'heure == 'chaîne' ? this.parse(time) : (time || new Date());
        pré = pré || '星期'; //周
        nombres = nombres || '日一二三四五六';
        return pre nums[time.getDay()];
    },
    //@formatType : AAAA, AA, MM
    //@ heure : nouvelle Date('2013/11/12')
    //@semaines : 日一二三四五六
    format : fonction (formatType, heure, semaines) { //格式化输出时间
        var pré = '0',
        formatType = pour
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn