日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript常用知识点集

發布時間:2023/12/14 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript常用知识点集 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄結構

一、jquery源碼中常見知識點

二、javascript中原型鏈常見的知識點

三、常用的方法集知識點

四、經典實例應用

?

一、jquery源碼中常見的知識點

  1.string,number類型轉換的快捷方法

// @param s為字符串,n為數字 function fn(obj){//轉換為String類型var s = obj +"";//轉換為number類型var n = +obj; }

  分享一個面試例子:

//加會將其后面自動轉換成字符串 "64"+4="644" //減會將其自動轉換成數字 "64"-4=60

?

  2.bool類型轉換

  !!obj,將其強制轉換為bool類型

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

  !obj,取相反的bool類型

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

  3.=== 與 ==區別

  === 是嚴格相等,不會進行類型轉換,而 == 是不嚴格相等,會進行類型轉換。有些js的書中,建議開發人員永遠不要用 == 或者 != 。

  但是jquery源碼中,有用到“==”或者“!=”的情況 —— 判斷 undefined 和 null 的時候(undefined == null為true)。

//這里的判斷,將obj是null,obj是undefined都排除在外了 if(obj != null){ }

  4.檢測obj是否為window對象

//null == window.null為true function isWindow(obj){return obj != null && obj == window.obj; }

  5.|| 與 && 用法技巧

//例 var aa=5; name = aa || {} ; alert(name) 則name為55 this.name = name || {} //如果name值存在,則值為name,反之為{}//例 var aa=5; name = aa && {} ; alert(name) 則name為{},因為aa為5,不為0則為真 this.name = bool && [] //如果bool為true,則值為[],反之則為bool

  經典實例:

( window.foo || ( window.foo = "bar" ) ); alert(window.foo); //彈出 bar
//? 為什么最后的結果是bar呢,其實可以看成是? ?undefined || bar??出來的結果肯定是bar

  6.setTimeout(fn,0)與setTimeout(fn)區別(此處有問題,沒有考慮單線程的問題,請比較了解的大神,幫忙指點)

  setTimeout(fn,0)與setTimeout(fn)都是延遲執行,但是setTimeout(fn)比setTimeout(fn,0)延遲時間還要長,例

function fn(){var data = new Date();for(var i=0;i<=1000;i++){if(i==1000){console.log("fn="+data.getTime());}}}function fn1(){var data = new Date();for(var i=0;i<=1000;i++){if(i==1000){console.log("fn1="+data.getTime());}}}setTimeout(fn,0),setTimeout(fn1);

  結果:

 

  7.判斷是否為數值

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

  8.判斷是否為空對象

function isEmptyObject(){var name;//遍歷不是空對象返回for (name in obj) {return false;}return true; }

  9.檢測對象類型

  檢測obj對象類型,返回類型,通過Object.prototype.toString()來判斷類型,但是ie低版本兼容性有問題,因此采用{}.toString來監測,返回為[object Array],[object Object],[object Function]

// 類型判斷 function isType(type){return function(o){return Object.prototype.toString.call(o) === '[object ' + type + ']';} }var isString = isType(“String”); var isObject = isType("Object"); var isArray = isType("Array");isString("I'm Barret Lee."); isArray([1,2,3]); isObject({});

  10.jquery里的去除空格trim妙用

 

//相當于if (String.prototype.trim && “\uFEFF\xA0″.trim() !== “”)高級的瀏覽器已經支持原生的String的trim方法,但是pFan還為了避免它沒法解析全角空白,所以加多了一個判斷:”\uFEFF\xA0″.trim() !== “” vart core_version = "1.0",core_trim = core_version.trim; function trim(){core_trim && !core_trim.call("\uFEFF\xA0") ?function (text) {return text == null ?"" :core_trim.call(text); //這里按我的理解應該為" ".trim.call(text),有點不明白轉換為"1.1.0".trim.call(text) } :// 高級的瀏覽器已經支持原生的String的trim方法,如果瀏覽器不支持則采用 function (text) {var whitespace = "[\\x20\\t\\r\\n\\f]",rtrim = new RegExp("^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g");return text == null ?"" :(text + "").replace(rtrim, "");},//nodeName函數是獲取dom節點的節點名字或者判斷其名字跟傳入參數是否匹配 nodeName: function(elem,name){//IE下,DOM節點的nodeName是大寫的,例如DIVreturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();} }

  11.jquery中檢測數組或者類數組中是否含存在傳入的值

/**檢查數組中是否存在傳入的值,如果存在就返回值所在的位置,如果不存在就返回-1。*elem 規定需檢索的值。*arr 數組*i 可選的整數參數。規定在數組中開始檢索的位置。它的合法取值是 0 到 arr.length - 1。如省略該參數,則將從數組首元素開始檢索。*/ function inArray(elem, arr, i){var len;if (arr) {//如果瀏覽器支持Array擁有indexOf方法if ([].indexOf) {return [].indexOf.call(arr, elem, i);}len = arr.length;//當i為負數的時候,從數組后邊len+i的位置開始索引//理解這個分成兩個部分i = i ? (i < 0 ? Math.max(0, len + i) : i) : 0;,i=i為true,執行(i < 0 ? Math.max(0, len + i) : i),反正執行i=0i = i ? i < 0 ? Math.max(0, len + i) : i : 0;for (; i < len; i++) {// 雙重檢測防止類似這樣的數組 ar = [];ar[1]=1;ar[0] = undefined; 0 in ar =false;a[0]===undefined; // 0 in arr => arr[0]是否存在 'nme' in arr => arr['nme']是否存在if (i in arr && arr[i] === elem) {return i;}}}return -1; }

?

二、javascript中原型鏈常見的知識點

  1.hasOwnProperty()方法

  ?使用hasOwnProperty()方法可以檢測一個屬性是存在與實例,還是存在于原型中。這個方法從Object繼承,只在給定屬性存在于對象實例中時,才會返回true。

function Person(){this.age=25;this.job="web";}Person.prototype={name:'pingfan',sayName:function(){alert(this.name);}}var person1=new Person();//來自構造函數,檢測屬性,也返回truealert(person1.hasOwnProperty("age"));//來自原型屬性,返回falsealert(person1.hasOwnProperty("name"));person1.name='ping';//來自實例屬性,返回truealert(person1.hasOwnProperty("name"));

  2.通過instanceOf檢查this是否為構造函數的一個實例

function shiCha(opt){//檢測this是否為對象的實例if( !(this instanceof shiCha)){return new shiCha(opt);} } var shicha1 = new shiCha(), //會返回一個shiCha對象
   shicha2 = shiCha(); //構造函數作為函數時與其他函數無意,this指向window

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

  我們通常看到Array.prototype.slice.call(arguments,1)或者Array.prototype.slice.call(arguments),都有點摸不著頭腦,其實我們就是借助Array.prototype中slice()將arguments變成一個數組,并且使用該數組工作更方便,第二個參數是從索引值,開始將其變成數組,例Array.prototype.call("22223",2)和Array.prototype.call([1,2,3,4],2),從字符串第二個開始。

function sliArray(array){//輸出為從索引1到索引3return Array.prototype.slice.call(array,1,3); } alert(sliArray([1,2,3,4,5,6])) //結果為2,3

  4.利用閉包,實現單例模式,保證構造函數只實例一次

//對象之間永遠不會完全相等,除非它們是同一對象,因此即使創建一個具有完全相同成員的同類對象,它也不會與第一個對象完全相同
     var Universe;(function(){var instance;Universe = function Universe(){if(instance){return instance;}instance = this;//所有功能this.start_time = 0;this.bang = "Big";}})()var person1 = new Universe(),person2 = new Universe();alert(person1 === person2 ); //返回true

  5.?利用空對象F,實現對象繼承,效率最高

//利用空對象做媒介,進行繼承效果最佳 function inhert(C,P){var F=function(){};F.protototype = P.prototype;C.prototype = new F();C.prototype.constructor = C; }

  6. 構造函數設置return obj對象,會導致對象與原型鏈斷掉

  理解這個問題,先理解一個概念,通常我們用new Object(),其實可以理解為隱式的做了三件事情:

    ①.創建一個空對象,var this ={},繼承object對象的一些原有的屬性;
    ②.將構造函數寫的屬性掛載到創建的對象,this.name = "pfan";
    ③.通過new object(),返回this對象
   場景一

var Parent = function (){var that = {};that.name = "pfan"; that.age = "25";return that;}Parent.prototype = {contructor:"Parent",sayName:function(){alert(this.name);},sayAge:function(){alert(this.age);}} var child = Parent(),last = new Parent();console.dir(child);console.dir(last);child.sayName();last.sayName();

  我們執行打開chrome控制臺,發現通過Parent(),new Parent()方法生成的對象原型鏈都斷裂了。

  場景二:我們把對象的屬性掛載在this上,也達不到想要的結果,構造函數如下:

var Parent = function (){var that = {};this.name = "pfan"; this.age = "25";return that;}

  chrome控制臺結果:

  場景三:我們更大膽一點,直接讓that成一個對象,返回that,觀察new Parent(),出來的對象,是否擁有prototype上的方法

var Parent = function (){this.name = "pfan"; this.age = "25";var that = {name:"pfan111",age:"2511"}return that;}

  chrome控制臺,可以看到new Parent(),實例返回的對象構造函數設置的返回對象,沒有繼承原型的prototype方法

  

  思考??:如果構造函數返回Array,null,通過new 實例會出現什么情況呢?

  1.Array,返回了一個Array對象,無法繼承prototype的原型

  

  2.null結果是返回繼承原型鏈的對象

  場景四:構造函數中不返回對象,返回字符串

var Parent = function (){this.name = "pfan"; this.age = "25";return "11111";}

  chrome控制臺:發現出來的結果,繼承了原型鏈

  通過以上四個場景,我們得出結論:

    1.構造函數里面,我們設置return 返回對象或者數組,通過new實例時,會導致原型鏈斷裂

    2.構造函數里面,我們設置return 返回字符串或者null,或者alert(),通過new實例時,會直接忽略

三、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.push( arr[len]); } } return newArr.reverse(); }
//也可以通過變量來記錄匹配,效率更高

Array.prototype.unique = function(){
  var arr = this,poxy,i = arr.length,newArr=[];
  while(i--){
    if(poxy != arr[i]){
      poxy = arr[i];
      newArr.push(arr[i]);
    }
  }
  return newArr.reverse();
}

?

  取數組中最大值:

Array.prototype.arrMax=function(){var arr=this, len=this.length,max=arr[0];for(var i=1;i<len;i++){if(max<arr[i]){max=arr[i];}}return max; } //數組中通過sort取最大值Array.prototype.arrMax=function(){var arr=this;arr.sort(function(a,b){return a-b;})return arr[arr.length-1];}//利用Math.max取數組最大值 Array.prototype.arrMax =function(){var array = this;return 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<len;i++){if(min>arr[i]){min=arr[i];}}return min; } //數組中通過sort取最的小值 Array.prototype.arrSortMin=function(){var arr=this;arr.sort(function(a,b){return a-b;})return arr[0]; }//利用Math.max取數組最大值 Array.prototype.arrSortMin =function(){var array = this;return Math.min.apply(null, array); } alert([1,2,3,4,5,6,9,8,7,9].arrSortMin());

  復制數組:

Array.prototype.copy =function() {return [].concat(this); };

  去除數組中只指定元素,只能去除一個,如果想多個,之前先用unique處理:

Array.prototype.remove = function(value){for(var i=0,len=this.length;i<len;i++){if(this[i]==value){this.splice(i, 1);break;}}return this; }

  判斷數組中元素出現的次數最多的一個元素和次數: 

Array.prototype.maxNum = function(){var arr = this,obj={};for(var i =0, len=arr.length;i<len;i++){var key = arr[i];if( ! obj[key]){obj[key] = 1;}else{obj[key]++;}}var max = -1,maxStr;for( key in obj){if(obj[key]>max){max = obj[key];maxStr = key;}}//alert(maxStr); maxStr為最大的元素,max為次數return [maxStr,max];}

?

  2.操作document.loaction的方法集(這里借用了園友總結的相關方法)

pFan.url = { //#URL//參數:變量名,url為空則表從當前頁面的url中取 getQuery: function (name, url) {var u = arguments[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) { //# 獲取 hash值var u = arguments[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) { //# 解析URLvar a = document.createElement('a');url = url || document.location.href;a.href = url;return {source: url, protocol: a.protocol.replace(':', ''), host: a.hostname, port: a.port, query: a.search, file: (a.pathname.match(/([^\/?#]+)$/i) || [, ''])[1], hash: a.hash.replace('#', ''), path: a.pathname.replace(/^([^\/])/, '/$1'), relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [, ''])[1], segments: 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) { //# 是否為 身份證return /^(\d{14}|\d{17})(\d|[xX])$/.test(card);}, isMobile: function (mobile) { //# 是否為 手機return /^0*1\d{10}$/.test(mobile);}, isQQ: function (qq) { //# 是否為 QQreturn /^[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) { //# 是否為 URLreturn /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 : 身份證 ,// @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位身份證if (15 == id.length) {age = '19' + id.slice(6, 6);} else {age = id.slice(6, 14);}// 類型轉換 整型age = ~~age;nowDate = ~~(Tydic.date.format('YYYYMMDD', now));//比較年齡if (nowDate - age < allowAge * 1e4) {return false;}return true;}//浮點數, isFloat: function (num) { //# 是否為 浮點數return /^(([1-9]\d*)|(\d+\.\d+)|0)$/.test(num);}//正整數, isInt: function (num) { //# 是否為 正整數return /^[1-9]\d*$/.test(num);}//是否全為漢字, isChinese: 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, {'&': "&amp;", '"': "&quot;", "'": '&#39;', '<': "&lt;", '>': "&gt;", ' ': "&nbsp;", '\t': "&#09;", '(': "&#40;", ')': "&#41;", '*': "&#42;", '+': "&#43;", ',': "&#44;", '-': "&#45;", '.': "&#46;", '/': "&#47;", '?': "&#63;", '\\': "&#92;", '\n': "<br>"});}//重復字符串, repeat: function (word, length, end) { //# 重復字符串end = end || ''; //加在末位length = ~~length;return new Array(length * 1 + 1).join(word) + '' + end;}//增加前綴, addPre: function (pre, word, size) { //# 補齊。如給數字前 加 0pre = pre || '0';size = parseInt(size) || 0;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:function(s) {if(s.indexOf('<script') == -1) return s;var p = /<script[^\>]*?>([^\x00]*?)<\/script>/ig;var arr = [];while(arr = p.exec(s)) {var p1 = /<script[^\>]*?src=\"([^\>]*?)\"[^\>]*?(reload=\"1\")?(?:charset=\"([\w\-]+?)\")?><\/script>/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(/<script.*?>.*?<\/script>/ig, '');}//字符串替換, replace: function (str, re) { //# 字符串替換str = str || '';for (var key in re) {replace(key, re[key]);};function 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" : "";}switch (type) {case "html": //過濾html字符串中的XSSreturn str.replace(/[&'"<>\/\\\-\x00-\x09\x0b-\x0c\x1f\x80-\xff]/g, function (r) {return "&#" + r.charCodeAt(0) + ";"}).replace(/ /g, "&nbsp;").replace(/\r\n/g, "<br />").replace(/\n/g, "<br />").replace(/\r/g, "<br />");break;case "htmlEp": //過濾DOM節點屬性中的XSSreturn str.replace(/[&'"<>\/\\\-\x00-\x1f\x80-\xff]/g, function (r) {return "&#" + r.charCodeAt(0) + ";"});break;case "url": //過濾urlreturn escape(str).replace(/\+/g, "%2B");break;case "miniUrl":return str.replace(/%/g, "%25");break;case "script":return str.replace(/[\\"']/g, function (r) {return "\\" + r;}).replace(/%/g, "\\x25").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\x01/g, "\\x01");break;case "reg":return str.replace(/[\\\^\$\*\+\?\{\}\.\(\)\[\]]/g, function (a) {return "\\" + a;});break;default:return escape(str).replace(/[&'"<>\/\\\-\x00-\x09\x0b-\x0c\x1f\x80-\xff]/g, function (r) {return "&#" + r.charCodeAt(0) + ";"}).replace(/ /g, "&nbsp;").replace(/\r\n/g, "<br />").replace(/\n/g, "<br />").replace(/\r/g, "<br />");break;}}// badword , 過濾敏感詞//@text : 要過濾的文本 , 類型 :字符串//@words : 敏感詞 ,類型,數組, 如 : ['你妹', '我丟' ,'我靠']// 如果 用 正則匹配, text 長度 100萬,words 100萬,需要 4秒!, badWord: function (text, words) { //# 敏感詞過濾text = String(text || '');words = words || [];var reg = new RegExp(words.join('|'), 'g'), _self = this;return text.replace(reg, function ($0) {var length = String($0 || '').length;return _self.repeat('*', length);});}};

  6.加密方法集

pFan.encrypt = { //# 加密md5: function (words) { //# md5 哈希算法/** Crypto-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 = new n; b && h.mixIn(b); h.hasOwnProperty("init") || (h.init = function () { h.$super.init.apply(this, arguments) }); h.init.prototype = h; h.$super = this; 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; this.clamp(); if (j % 4) for (var g = 0; g < b; g++) h[j + g >>> 2] |= (a[g >>> 2] >>> 24 - 8 * (g % 4) & 255) << 24 - 8 * ((j + g) % 4); else if (65535 < a.length) for (g = 0; g < b; g += 4) h[j + g >>> 2] = a[g >>> 2]; else h.push.apply(h, a); this.sigBytes += b; return this }, clamp: function () { var b = this.words, h = this.sigBytes; b[h >>> 2] &= 4294967295 << 32 - 8 * (h % 4); b.length = s.ceil(h / 4) }, clone: function () { var b = r.clone.call(this); b.words = this.words.slice(0); return b }, random: function (b) { for (var h = [], a = 0; a < 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; for (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("") }, parse: function (b) { for (var a = b.length, g = [], j = 0; j < a; 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; for (var g = [], j = 0; j < b; j++) g.push(String.fromCharCode(a[j >>> 2] >>> 24 - 8 * (j % 4) & 255)); return g.join("") }, parse: 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 Error("Malformed UTF-8 data"); } }, parse: 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 ? s.ceil(m) : s.max((m | 0) - this._minBufferSize, 0); b = m * k; j = s.min(4 * b, j); if (b) { for (var l = 0; l < b; l += k) this._doProcessBlock(g, l); l = g.splice(0, b); a.sigBytes -= j } return new q.init(l, j) }, clone: function () { var b = r.clone.call(this); b._data = 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() }, update: 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 = {}; return m}(Math);(function (s) {function p(a, k, b, h, l, j, m) { a = a + (k & b | ~k & h) + l + m; return (a << j | a >>> 32 - j) + k } function m(a, k, b, h, l, j, m) { a = a + (k & h | b & ~h) + l + m; return (a << j | a >>> 32 - j) + k } function l(a, k, b, h, l, j, m) { a = a + (k ^ b ^ h) + l + m; 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; 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 << 24 - h % 32; var l = s.floor(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.length + 1); this._process(); a = this._hash; k = a.words; for (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(); return a }}); r.MD5 = t._createHelper(q); r.HmacMD5 = t._createHmacHelper(q)})(Math);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 = this; var c = new l; a && c.mixIn(a); c.hasOwnProperty("init") || (c.init = function () { c.$super.init.apply(this, arguments) }); c.init.prototype = c; c.$super = this; 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; a = a.sigBytes; this.clamp(); if (d % 4) for (var b = 0; b < a; b++) c[d + b >>> 2] |= (q[b >>> 2] >>> 24 - 8 * (b % 4) & 255) << 24 - 8 * ((d + b) % 4); else if (65535 < q.length) for (b = 0; b < a; b += 4) c[d + b >>> 2] = q[b >>> 2]; else c.push.apply(c, q); this.sigBytes += a; return this }, clamp: function () { var a = this.words, c = this.sigBytes; a[c >>> 2] &= 4294967295 << 32 - 8 * (c % 4); a.length = e.ceil(c / 4) }, clone: function () { var a = f.clone.call(this); a.words = this.words.slice(0); return a }, random: function (a) { for (var c = [], b = 0; b < a; 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; for (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("") }, parse: function (a) { for (var c = a.length, b = [], d = 0; d < c; d += 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; for (var b = [], d = 0; d < a; d++) b.push(String.fromCharCode(c[d >>> 2] >>> 24 - 8 * (d % 4) & 255)); return b.join("") }, parse: 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 Error("Malformed UTF-8 data"); } }, parse: 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); this._nDataBytes += a.sigBytes }, _process: function (a) { var c = this._data, b = c.words, d = c.sigBytes, f = this.blockSize, h = d / (4 * f), h = a ? e.ceil(h) : e.max((h | 0) - this._minBufferSize, 0); a = h * f; d = e.min(4 * a, d); if (a) { for (var g = 0; g < a; g += f) this._doProcessBlock(b, g); g = b.splice(0, a); c.sigBytes -= d } return new n.init(g, d) }, 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() }, update: 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; 80 > a; a++) { if (16 > a) l[a] = f[n + a] | 0; else { var c = l[a - 3] ^ l[a - 8] ^ l[a - 14] ^ l[a - 16]; l[a] = c << 1 | c >>> 31 } c = (h << 5 | h >>> 27) + j + l[a]; c = 20 > a ? c + ((g & e | ~g & k) + 1518500249) : 40 > a ? c + ((g ^ e ^ k) + 1859775393) : 60 > a ? c + ((g & e | g & k | e & k) - 1894007588) : c + ((g ^ e ^ k) - 899497514); j = k; k = e; e = g << 30 | g >>> 2; g = h; h = c } b[0] = b[0] + h | 0; b[1] = b[1] + g | 0; b[2] = b[2] + e | 0; b[3] = b[3] + k | 0; 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 - h % 32; e[(h + 64 >>> 9 << 4) + 14] = Math.floor(b / 4294967296); e[(h + 64 >>> 9 << 4) + 15] = b; f.sigBytes = 4 * e.length; this._process(); return this._hash }, clone: function () { var e = j.clone.call(this); e._hash = this._hash.clone(); return e } }); e.SHA1 = j._createHelper(m); e.HmacSHA1 = j._createHmacHelper(m) })();return CryptoJS.SHA1(words).toString();}// time33 哈希, time33: function (words) { //# time33 哈希算法words = words || '';//哈希time33算法for (var i = 0, len = words.length, hash = 5381; i < len; ++i) {hash += (hash << 5) + words.charAt(i).charCodeAt();};return 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 , 時間 , 如 new Date('2013/11/10 0:12:12')//@pre , 星期的 前綴,如:周 ,星期//@ nums ,如:一二三四五六日getWeek: function (time, pre, nums) { //# 獲取星期幾time = typeof time == 'string' ? this.parse(time) : (time || new Date());pre = pre || '星期'; //nums = nums || '日一二三四五六';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 = formatType || 'YYYY-MM-DD',weeks = weeks || '日一二三四五六',time = time || new Date();//格式化時間return (formatType || '').replace(/yyyy|YYYY/g, time.getFullYear()).replace(/yy|YY/g, Tydic.string.addPre(pre, time.getFullYear() % 100), 2).replace(/mm|MM/g, Tydic.string.addPre(pre, time.getMonth() + 1, 2)).replace(/m|M/g, time.getMonth() + 1).replace(/dd|DD/g, Tydic.string.addPre(pre, time.getDate(), 2)).replace(/d|D/g, time.getDate()).replace(/hh|HH/g, Tydic.string.addPre(pre, time.getHours(), 2)).replace(/h|H/g, time.getHours()).replace(/ii|II/g, Tydic.string.addPre(pre, time.getMinutes(), 2)).replace(/i|I/g, time.getMinutes()).replace(/ss|SS/g, Tydic.string.addPre(pre, time.getSeconds(), 2)).replace(/s|S/g, time.getSeconds()).replace(/w/g, time.getDay()).replace(/W/g, weeks[time.getDay()]);} }

?

四、經典實例應用

  1.遞歸方法實現如下數列:1,1,2,3,5,8,13,21,34,55……

//a為位數 a為大于1的正整數 function diGui(a){if(a<=2){return 1;}else{return arguments.callee(a-1)+arguments.callee(a-2);}}alert(diGui(31));

?  2.百度產生時間戳的方法

new Date()/36e5

?  3.獲取字符串字節,一個因為字母1個字節,一個中文字符2個字節

//字節 function getBite(str){var len = str.length,i=len;while(i--){//中文字符串的charCodeAt碼大于255if(strrr[i].charCodeAt()>255)len++;}return len;}alert(getBite(strrr));

?  4.var聲明提前的問題

var aa = 123;function alaa(){alert(aa) //結果為undefinedvar aa = "111"; //這里的聲明被提前的,但是賦值在后alert(aa); //結果為111 }alaa();

  等價于:

var aa; alert(aa); aa=111; alert(aa);

?  5.操作數組的問題

var arr = [1,2,3,4,5,6];var newArr = arr;arr.splice(0,3);console.log(newArr); //彈出結果為[4,5,6]  newArr = arr,這一步其實我們像形成一種拷貝的形式,可是到我們去刪除arr數組里面的而原始,發現newArr里面的元素也減少了,所以newArr = arr,只是將newArr的數組指針指向了arr,所以操作arr時影響newArr。
解決辦法:
var arr = [1,2,3,4,5,6];var newArr = arr.slice(0);arr.splice(0,3),arr.push("111");console.log(arr); //結果[4,5,6,"111"]console.log(newArr); //結果 [1,2,3,4,5,6]

?  6.隨機打亂數組

function shuffle(array) {return array.sort(function() {return Math.random() - 0.5}); }

?

?

    參考文字打亂數組順序:http://www.cnblogs.com/wayou/p/fisher_yates_shuffle.html

  

?

轉載于:https://www.cnblogs.com/pingfan1990/p/4309223.html

總結

以上是生活随笔為你收集整理的javascript常用知识点集的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

日本在线观看中文字幕 | 免费在线看成人av | 亚洲成av人影院 | 久久久久久免费网 | 久久免费视频在线 | 国产成人区 | 麻豆国产视频下载 | av中文字幕剧情 | 成人黄色免费在线观看 | 国产免费a | 青青草在久久免费久久免费 | 成年人在线播放视频 | 日日爽视频 | 天天射天天操天天色 | 色五婷婷 | 四虎成人精品 | 日韩大片免费观看 | 特黄色大片 | 国产精品综合在线观看 | 国产精品一区二区在线观看免费 | 手机av在线免费观看 | 毛片网站免费在线观看 | 久久综合欧美精品亚洲一区 | 日韩av中文字幕在线免费观看 | av片中文字幕 | 国产精品久久久久久久久久新婚 | 天天摸日日摸人人看 | 黄色av一区| 久久精品高清 | 又黄又爽的视频在线观看网站 | 激情综合五月天 | 免费在线h| 欧美精品久久久久久久 | 亚洲精品国产精品乱码不99热 | 久久九九网站 | 国产激情小视频在线观看 | 久久夜色网 | av黄色免费在线观看 | 九九九热 | 91av在线不卡| 国产精品久久一卡二卡 | 欧美一级在线看 | 夜夜夜夜夜夜操 | 夜夜嗨av色一区二区不卡 | 日韩精品免费一线在线观看 | 视频在线观看入口黄最新永久免费国产 | 亚洲欧美视频网站 | 久久精品视频99 | 精品国产一区二区三区四区vr | 国产精品国产三级在线专区 | 亚洲国产精品人久久电影 | 激情五月播播久久久精品 | 99视频网址| 国产露脸91国语对白 | 亚洲精品啊啊啊 | 亚洲麻豆精品 | 日韩天天干 | 成年人看片网站 | 免费在线观看av的网站 | 久久久99精品免费观看app | 在线看成人av | 国产99久久精品 | 日韩中文字幕亚洲一区二区va在线 | 久久精品国产一区二区 | 精品国产乱码久久久久久天美 | 波多野结衣精品视频 | www久久国产 | 五月婷香蕉久色在线看 | 亚洲艳情| 一级成人免费视频 | 成人黄色在线电影 | 视频一区久久 | 人人干人人艹 | 免费观看成人网 | 亚洲一区日韩 | 在线观看免费国产小视频 | 在线观看成年人 | 久久久穴 | 不卡的av电影在线观看 | 中文在线天堂资源 | 久久久免费电影 | 91免费在线视频 | 97国产超碰在线 | 91桃色在线免费观看 | 日韩欧美91 | www成人精品| 精品你懂的 | 日日天天av| 久草在线中文视频 | 一本一本久久aa综合精品 | 狠狠色丁香婷婷综合久小说久 | 天天草天天干天天射 | 国产亚洲欧美日韩高清 | 久青草视频 | 黄色软件网站在线观看 | 成人免费视频播放 | 在线观看亚洲视频 | 亚洲欧美日韩在线看 | 九九综合九九综合 | 91激情视频在线 | 久久免费视频这里只有精品 | 欧美日韩国产精品一区二区亚洲 | 一区二区精品视频 | 最新av免费在线观看 | 欧美aa一级 | 日韩动漫免费观看高清完整版在线观看 | 少妇精69xxtheporn | 超碰97免费在线 | 成人免费观看电影 | 最新国产一区二区三区 | 国产在线a免费观看 | 国产三级久久久 | 成人性生交大片免费看中文网站 | 日韩乱理| 国产韩国日本高清视频 | 久久久久亚洲国产精品 | 99在线观看 | 中文字幕美女免费在线 | 波多野结衣在线中文字幕 | 日韩免费三区 | 日韩成人精品在线观看 | www.夜夜草| av在线播放国产 | 久久久午夜精品理论片中文字幕 | 日韩欧美综合视频 | 91麻豆网站 | 中文字幕一区二区三区四区视频 | 久久久久久久免费观看 | 久久观看最新视频 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 精品成人网 | 青青射 | 在线欧美最极品的av | 欧美一区日韩一区 | 日韩欧美极品 | 欧美 另类 交 | 波多在线视频 | 免费观看mv大片高清 | 欧美精品久久久久久久久久久 | 99在线热播精品免费99热 | 久草网在线 | 国产黄a三级 | 国产成人一区二区三区电影 | 欧美日韩大片在线观看 | 精品一区二区影视 | 搡bbbb搡bbb视频 | 久久a国产 | 美女视频a美女大全免费下载蜜臀 | 亚洲伊人第一页 | 欧美精品午夜 | 亚洲成av人片| 操操操综合 | 欧美在线观看小视频 | 日韩手机在线观看 | 狠狠久久 | 国产黄a三级三级三级三级三级 | 99久久精品午夜一区二区小说 | 色中色综合 | 日韩在线中文字幕视频 | 99热 精品在线 | 日韩精品综合在线 | 亚洲免费公开视频 | 欧美精品资源 | 日韩一级黄色大片 | 免费亚洲成人 | 国产韩国日本高清视频 | bbw av| 五月天视频网站 | 96av视频| 一区二区欧美激情 | 一区二区三区不卡在线 | 99久久精品无码一区二区毛片 | 粉嫩av一区二区三区四区在线观看 | a视频在线观看免费 | 亚洲亚洲精品在线观看 | 韩日精品在线 | 久久免费99精品久久久久久 | 国产精品福利午夜在线观看 | 国产亚洲精品久久久久久久久久久久 | 日韩超碰| 日韩精品免费在线 | 国产破处在线视频 | 国产 字幕 制服 中文 在线 | 麻豆视频免费网站 | 国产精品乱码在线 | 高清国产午夜精品久久久久久 | 麻豆精品视频在线观看免费 | 91福利视频免费观看 | 日一日干一干 | 久久久久久久久久久高潮一区二区 | 国产日韩欧美在线看 | 欧美日韩久 | 中文有码在线视频 | 国产中文字幕在线免费观看 | 在线观看网站你懂的 | 999久久久久久久久6666 | 国产美女网 | 成年人视频在线免费观看 | 丁香五月缴情综合网 | 美女视频永久黄网站免费观看国产 | 精品国产一区二区三区久久久蜜月 | 日韩高清在线一区二区三区 | 精品一区二区在线看 | 久久色视频 | 中文字幕在线免费看 | 国产高清在线观看av | 免费网址你懂的 | 天堂av在线网 | 97综合在线 | 国产高清久久 | 中文字幕在线观看完整版 | 精品国产一区二区三区蜜臀 | 国产综合在线视频 | 精品久久久久久久久久久久久久久久久久 | 99看视频在线观看 | 99视频在线观看免费 | 久久免费视频这里只有精品 | 人人干人人添 | 国产福利电影网址 | 亚洲欧洲国产日韩精品 | 成人国产网址 | 亚洲一级片在线观看 | 色午夜影院 | 国产精品ssss在线亚洲 | 粉嫩aⅴ一区二区三区 | 中文字幕在线日亚洲9 | 国产精品久久久久影院 | 久久99国产精品久久 | 91精品国产麻豆国产自产影视 | 丁香六月国产 | 国产精品一区二区吃奶在线观看 | av免费电影网站 | 久久av中文字幕片 | 欧美在线free | 日日爽 | 国产成人精品999 | 午夜在线日韩 | 91av视频网| 在线日韩视频 | 日韩在线精品视频 | 亚洲涩涩网站 | 91超碰在线播放 | 九九九热精品免费视频观看网站 | 成人动漫精品一区二区 | 97视频在线免费播放 | 成人av直播| av成人免费 | 伊人黄色网 | 国产高清小视频 | 又湿又紧又大又爽a视频国产 | 日韩中文在线播放 | 婷婷激情综合五月天 | 免费久久99精品国产 | 欧美污在线观看 | 五月香视频在线观看 | h视频在线看 | 中文字幕在线第一页 | 亚洲三级黄 | 亚洲免费一级 | 国产手机视频在线 | 精品国模一区二区三区 | 国产自在线 | 日韩久久久久久久久久久久 | 欧美日韩在线电影 | 久久视频精品 | 亚洲黄色片| 欧美天堂视频在线 | 69亚洲视频 | 在线观看日韩av | 91精品一区二区三区蜜臀 | 五月婷在线播放 | 91精品国产91久久久久 | 亚洲最新av在线网址 | 狠狠色噜噜狠狠狠合久 | 精品久久久久久久久久久久久 | 天堂va在线高清一区 | 91av在| 日韩视频一区二区三区在线播放免费观看 | 欧美性久久久久久 | 成人福利在线观看 | 欧美精品久久久久久久久久久 | 色婷婷狠狠五月综合天色拍 | 91亚洲视频在线观看 | 人人爽久久涩噜噜噜网站 | 久久在线免费观看 | av色综合网 | 亚洲狠狠干 | 色婷婷www | 久草久视频 | 性色视频在线 | 日韩欧美视频一区二区三区 | 视频二区在线视频 | 干综合网 | 国产一区二区三区免费在线观看 | 99久久免费看| 免费精品 | 特级毛片爽www免费版 | 98福利在线| 黄网站免费看 | 九月婷婷人人澡人人添人人爽 | 黄色www免费| 久久99久久99精品免观看粉嫩 | 五月天.com| 久久久久久毛片 | 久草在线中文视频 | 亚洲精品在线视频播放 | 在线视频日韩 | 国产在线国偷精品产拍 | 丁香久久久 | 久久免费99精品久久久久久 | 精品久久久久一区二区国产 | 欧美在线视频二区 | 日韩激情网 | 亚洲国产99 | 在线观看日本韩国电影 | 日韩av免费一区二区 | 狠狠色噜噜狠狠 | 久久美女精品 | 成人免费看电影 | 国产精品 国产精品 | 国产精品乱码一区二区视频 | 国产又粗又硬又爽的视频 | 一级特黄aaa大片在线观看 | 99久久精 | 色综合人人 | 五月天高清欧美mv | 国产这里只有精品 | 激情久久网 | 99一区二区三区 | 国产一区影院 | 99在线免费观看视频 | 日日爱视频| 久久精品视频免费播放 | 欧美日韩在线播放一区 | 懂色av懂色av粉嫩av分享吧 | 久久久免费 | a黄色片在线观看 | 色综合综合| 国产一线二线三线在线观看 | 久久国产精品精品国产色婷婷 | 五月婷婷婷婷婷 | 国产精品久久久久毛片大屁完整版 | 深爱开心激情 | 国产手机视频在线 | 久久福利小视频 | 久久男人视频 | 国产精品va | 色就是色综合 | 日韩剧| 99国产精品视频免费观看一公开 | 国产福利精品一区二区 | 色综合色综合久久综合频道88 | 亚洲精品视频大全 | 一区二区三区在线影院 | 久久精品在线免费观看 | 国产黄视频在线观看 | 美女国内精品自产拍在线播放 | 深夜成人av | 国产1区2区3区精品美女 | 国内精品美女在线观看 | 久久深夜福利免费观看 | 成人动漫精品一区二区 | 国产第一页福利影院 | 天天干天天天天 | av成人亚洲 | 午夜免费福利片 | 手机看片国产日韩 | 国产伦精品一区二区三区高清 | 玖玖在线播放 | 噜噜色官网 | 九九免费在线观看视频 | 四虎影视成人永久免费观看亚洲欧美 | 美女在线免费视频 | 免费在线观看日韩欧美 | 亚洲一级在线观看 | 成在线播放 | 久久久久久久毛片 | 日本女人的性生活视频 | 欧美黄色免费 | 国产精品久久久影视 | 豆豆色资源网xfplay | 国产精品久久久久久999 | 国产亚洲久久 | 国产高清视频在线 | 亚洲91中文字幕无线码三区 | 国产麻豆精品久久一二三 | 三上悠亚在线免费 | 在线视频国产区 | www.狠狠色.com | 国产亚洲情侣一区二区无 | 日批网站在线观看 | 91精彩视频在线观看 | 久久艹欧美| 久久综合色播五月 | 色偷偷88888欧美精品久久久 | av中文字幕日韩 | 国产午夜精品理论片在线 | 亚洲爽爽网 | 国产精品久久久久久久久岛 | 在线成人性视频 | 天天天综合网 | 激情偷乱人伦小说视频在线观看 | 国产精品免费观看在线 | wwwwwww色| 色婷婷综合久久久 | 精品国产一二三 | 亚洲日本一区二区在线 | 日韩性xxx | 成人欧美一区二区三区在线观看 | 91精品视频网站 | 国产精品一区二区av日韩在线 | 亚洲精品午夜久久久 | 一区二区视频在线播放 | 18性欧美xxxⅹ性满足 | 中文字幕 91 | 日韩欧美一区二区三区在线 | 欧美性色黄大片在线观看 | 欧美成人xxxx | 国产精品久久久久久久久久久久久 | 精品99久久久久久 | 精品久久久久久久久久岛国gif | 国产精品久久网 | 黄视频网站大全 | 成人h在线| 国产精品福利无圣光在线一区 | 黄色网免费 | 成人91在线| a极黄色片| 国产三级av在线 | 国产色网| 久久成人欧美 | 天堂av在线网址 | 麻豆首页 | 久久理论视频 | 国产资源在线观看 | 日本在线中文在线 | 99精品国产免费久久久久久下载 | 超碰97人人爱 | 国产a网站 | 五月天色站 | 丁香婷婷色综合亚洲电影 | 在线免费试看 | av电影免费看 | 狠狠色狠狠综合久久 | 波多野结衣资源 | 中文字幕黄网 | 久久国产福利 | 国产精品免费观看网站 | 亚洲日本三级 | 人人舔人人射 | 国产精品久久久久久超碰 | 人人要人人澡人人爽人人dvd | 久久夜av | 日韩精品视频第一页 | 玖玖在线视频观看 | 精品欧美小视频在线观看 | 最新中文字幕 | 国产精品视频在线看 | 日产中文字幕 | 日韩啪啪小视频 | 一色屋精品视频在线观看 | 人人射人人射 | 九九热在线视频免费观看 | 四虎成人精品永久免费av | 中文在线8资源库 | 草莓视频在线观看免费观看 | 人人添人人澡 | 久久精品一区 | 高清一区二区 | 国产精品美女久久久免费 | 国产成人一区二区精品非洲 | 天天射天天干天天爽 | 人人插人人搞 | 久久久久国产a免费观看rela | 日韩 国产 | 色婷婷视频在线 | 综合久久精品 | 日韩视频免费观看高清 | 日韩亚洲在线视频 | 天天夜操| 欧美成人69av| 一区二区三区播放 | 精品国产视频在线 | 午夜精品久久久久久久久久 | 欧美激情视频一区二区三区 | 97人人澡人人添人人爽超碰 | 国产一区二区在线免费 | 五月婷久 | 日韩在线视频一区 | 超碰夜夜 | 五月花激情 | 婷婷久久国产 | 国产黑丝袜在线 | 中文字幕在线不卡国产视频 | 在线免费中文字幕 | 四虎影视成人精品国库在线观看 | 一区二区三区www | 精品久久精品 | 9在线观看免费 | 成年人免费电影在线观看 | 在线观看91网站 | 99婷婷狠狠成为人免费视频 | 91av视频网| 91av在线视频播放 | 国产综合91 | 91精品无人成人www | 亚洲 欧美变态 另类 综合 | 日韩av女优视频 | 69av网| 美女久久久久久久 | 青青草在久久免费久久免费 | 96久久 | 97在线观看免费高清完整版在线观看 | 夜夜爱av| 久久视频网 | 最新av免费在线观看 | 能在线观看的日韩av | 在线观看日韩精品视频 | 国产午夜激情视频 | 伊人天天综合 | 国产免费成人av | 超碰在线公开免费 | 狠狠色狠狠色合久久伊人 | 黄色三级在线看 | 欧美国产精品一区二区 | 国产手机视频在线观看 | 国产91小视频 | 日韩影视大全 | 亚洲精品国产综合久久 | 色婷婷激情四射 | 国产91全国探花系列在线播放 | 成人av在线直播 | 欧美一级特黄aaaaaa大片在线观看 | 成年人免费观看在线视频 | 久久精品网站视频 | 狠狠色丁香久久婷婷综合丁香 | 九九九热精品免费视频观看 | 久久伊人国产精品 | 99久久精品国产毛片 | 97人人模人人爽人人喊中文字 | 激情五月播播久久久精品 | 九九视频精品在线 | 黄色在线观看污 | 日韩狠狠操 | 日本久久中文字幕 | 高清中文字幕av | 一级黄色片在线观看 | 久久亚洲美女 | 久草视频手机在线 | 二区三区在线观看 | 亚州精品天堂中文字幕 | 色婷婷综合久久久久中文字幕1 | 91视频高清完整版 | 成人91在线观看 | 免费黄色网址网站 | 草久久久久久 | 在线不卡a | www在线观看视频 | 亚洲女裸体 | 91久久久久久久一区二区 | 激情婷婷在线观看 | 国产精品福利av | 亚洲人片在线观看 | 九月婷婷综合网 | 一区二区久久 | 国产一级久久 | 日韩一区二区免费视频 | 欧美日韩国产在线 | 91福利视频久久久久 | 91天堂影院| 欧美日韩一区二区在线观看 | 在线观看一级片 | av成人在线电影 | 91黄色小视频 | 亚洲少妇久久 | 欧美a级免费视频 | 午夜精品久久一牛影视 | 婷婷中文在线 | 99免在线观看免费视频高清 | 国产美女在线精品免费观看 | 亚洲国产手机在线 | 久久在线| 在线亚洲人成电影网站色www | 久久精品日产第一区二区三区乱码 | 91激情视频在线观看 | 在线免费观看视频一区二区三区 | 9999激情| 久久精品视频在线观看 | 久久99久久99精品免观看软件 | 亚州精品天堂中文字幕 | 亚洲三级性片 | 一区二区三区四区五区在线 | 欧美日韩性 | 91av视频 | 久久久999免费视频 日韩网站在线 | av中文在线观看 | 国产精品国产精品 | 久久精品久久精品久久 | 三级av免费看 | 欧美精品在线观看免费 | 涩涩资源网| 最新国产精品视频 | 欧美综合在线观看 | 久久久久久久久久久福利 | 久草精品视频在线观看 | 黄色三级av | 人人舔人人插 | 国产超碰在线观看 | 午夜av在线播放 | 中文日韩在线 | 手机成人在线电影 | 日韩精品一区二区在线视频 | 国产系列在线观看 | 国产精品av免费 | 黄色三级视频片 | 亚洲日本一区二区在线 | 日日操日日 | 日韩美女黄色片 | 黄网站污 | 国产美女在线精品免费观看 | 99精品在线观看视频 | 麻豆视频免费在线 | 欧美一级免费高清 | av黄色免费看 | www日韩在线观看 | 国产视频1区2区3区 久久夜视频 | 中文字幕精品三级久久久 | 国产精品va在线观看入 | 99日韩精品| 99色资源 | 国产精品久久久久免费 | 激情视频区| 色综合在 | 黄色福利视频网站 | 久久精品理论 | 91在线看片 | 国产一级黄色av | 91成年人视频 | 日本久久久久久 | 五月婷婷香蕉 | 国内精品毛片 | 国产精品不卡在线观看 | 中文免费观看 | 天天狠狠操 | 成人av免费电影 | 最新国产精品视频 | 97超碰中文字幕 | 日本狠狠干 | 欧美精品九九99久久 | 久久综合狠狠综合久久狠狠色综合 | 成人91av | 九九亚洲视频 | 欧美大片大全 | 色综合天天狠天天透天天伊人 | 久草免费电影 | 国产又粗又猛又黄又爽视频 | 亚洲一区在线看 | 欧美精品免费在线 | 国产成人福利片 | 欧美日韩1区2区 | 久色婷婷 | 伊人狠狠色丁香婷婷综合 | 永久黄网站色视频免费观看w | 韩国av电影在线观看 | 夜夜骑日日 | 亚洲综合精品在线 | 日韩性色 | 久草视频中文在线 | 午夜精品成人一区二区三区 | 亚洲毛片在线观看. | 六月激情网 | 99爱视频在线观看 | 免费视频网 | 亚洲黄色成人网 | 99热最新网址 | 97超碰香蕉| 五月丁香 | 免费av网址在线观看 | 久久在线观看视频 | 国产欧美综合在线观看 | 亚洲成人av在线电影 | 精品国产一区二区在线 | 日日夜夜天天综合 | 日日夜夜狠狠干 | 麻豆精品视频在线观看免费 | 久久综合免费视频影院 | 人人搞人人搞 | 九九视频免费观看视频精品 | 天天草天天爽 | 国产精品久久久久久爽爽爽 | 亚洲女同ⅹxx女同tv | 91麻豆精品国产91久久久更新时间 | 在线观看视频91 | 国产免码va在线观看免费 | 91精品久久久久久综合乱菊 | 国产一级高清视频 | 亚洲三级网站 | 亚洲va男人天堂 | 九九热在线视频 | 91成人蝌蚪 | 日韩在线观看电影 | 久久情网| 中文字幕欧美日韩va免费视频 | 日韩一区二区免费播放 | 欧美日韩在线观看一区二区 | 夜夜操天天 | 日韩成人看片 | 国产精品区二区三区日本 | 日韩精品中文字幕在线观看 | 91桃色在线观看视频 | 一二三精品视频 | 日韩中文字幕在线 | 天天爽天天爽天天爽 | 国产91勾搭技师精品 | 精品久久久久久一区二区里番 | 日韩v欧美v日本v亚洲v国产v | 久久综合婷婷 | 在线观看免费版高清版 | 亚洲综合射 | 五月婷婷另类国产 | 在线免费色视频 | 国产成在线观看免费视频 | 国际精品久久久久 | 人人玩人人添人人澡97 | 99精品视频观看 | 麻豆一区二区 | 日韩精品免费一线在线观看 | 91黄色在线视频 | 国产亚洲人成网站在线观看 | 久久99影院| 97看片 | 日本久久中文字幕 | 99视频在线免费观看 | 干av在线 | 亚洲三级在线播放 | 精品久久久久久国产91 | 99视频免费看 | 日本性xxx | 国产精彩在线视频 | 摸bbb搡bbb搡bbbb | 麻豆播放 | 免费日韩在线 | 免费在线激情视频 | 亚洲精品在线观看不卡 | 国产成在线观看免费视频 | 国产91精品一区二区绿帽 | 玖玖玖在线观看 | 在线观看色网 | 日本公乱妇视频 | 国产专区免费 | 九色精品免费永久在线 | 国产在线国偷精品产拍 | 亚洲另类交 | 成人a级网站 | 一本一本久久a久久精品牛牛影视 | 亚洲一区日韩精品 | 久久情侣偷拍 | av网站在线观看免费 | 中文在线中文a | 国产精彩视频 | 国产麻豆精品久久一二三 | 日韩精品视频久久 | 久久这里有精品 | 久久污视频 | 韩国精品视频在线观看 | 激情丁香久久 | 免费97视频 | 丁香激情婷婷 | 最新日韩在线观看 | 亚洲性少妇性猛交wwww乱大交 | 久久婷婷五月综合色丁香 | 日韩精品免费在线观看 | 久久综合狠狠综合久久激情 | 欧美另类xxx | 99re热精品视频 | 特级毛片aaa | 久久激情五月激情 | 色先锋资源网 | 深爱五月激情网 | 中文字幕免费观看 | 免费色视频 | 91久久国产自产拍夜夜嗨 | 日韩视| 色婷婷六月天 | 2020天天干夜夜爽 | 在线视频91 | 欧美日韩一区三区 | 亚洲免费av片 | 国产午夜三级一区二区三 | 在线观看电影av | 国产色爽 | 麻豆91精品91久久久 | 国产在线观看h | 欧美精品久久久久久久久免 | 国产黄色片一级三级 | 久久九九影视网 | 激情五月婷婷综合网 | 欧美日韩首页 | 国产一区电影在线观看 | 91视频在线自拍 | 最近高清中文在线字幕在线观看 | 午夜aaaa| 亚洲国产av精品毛片鲁大师 | 国产999免费视频 | 亚洲国产视频直播 | 超碰97免费| 国产精品av电影 | 日本精品视频一区二区 | 成 人 黄 色 片 在线播放 | 国产电影黄色av | 国产一区二区在线播放视频 | 国产无套精品久久久久久 | 天天天综合网 | 麻豆视频www| 亚洲激情综合网 | 午夜天天操 | 特级毛片网 | 中文字幕.av.在线 | 久久久亚洲电影 | 中文超碰字幕 | 91片网| 国产精品国产三级国产aⅴ入口 | 国产精品免费在线观看视频 | 天天干夜夜想 | 91高清在线| 国产在线高清视频 | 欧美久久久久久久久久久 | 精品一区在线看 | 国产一区二区在线观看视频 | av色网站 | 国产亚洲欧美在线视频 | 久久a免费视频 | 亚洲人精品午夜 | 国产精品久久中文字幕 | 999ZYZ玖玖资源站永久 | 在线观看日本高清mv视频 | 亚州精品天堂中文字幕 | 伊人网站 | 国产精品久久影院 | 精品美女久久久久久免费 | 99久热在线精品视频成人一区 | 99中文字幕在线观看 | 99r在线视频| 久草免费新视频 | 国产视频手机在线 | 激情五月综合 | 色就色,综合激情 | 香蕉色综合 | 国产91亚洲 | 日日操操 | 亚洲成色777777在线观看影院 | 麻豆传媒电影在线观看 | 日韩电影中文字幕在线观看 | 欧美亚洲一级片 | 91人人射 | 五月天综合激情 | bayu135国产精品视频 | 黄色大片免费播放 | 99re在线视频观看 | 久久亚洲私人国产精品va | 午夜精品999 | 97精品在线| 日本最新一区二区三区 | 超碰在线成人 | 狠狠操在线 | 国产一区视频免费在线观看 | 天天色天天干天天色 | 亚洲综合在线五月 | 一区 在线观看 | 亚洲国产日韩一区 | 香蕉久久久久久av成人 | 99久久综合精品五月天 | 国产精品乱码久久久久 | 日韩一级片网址 | 91成人免费看| 欧洲一区二区三区精品 | 日韩视频免费播放 | 五月天六月婷 | 国产中文字幕网 | 51久久夜色精品国产麻豆 | 精品亚洲午夜久久久久91 | 91麻豆产精品久久久久久 | 一区二区视频在线播放 | 国内揄拍国内精品 | 特级毛片网站 | freejavvideo日本免费 | 国产视频1 | www.天天射.com | 极品中文字幕 | 九九九热精品免费视频观看网站 | 亚洲最新精品 | 国产精品欧美久久 | 亚洲91精品 | 久久国产精品电影 | 亚洲一级理论片 | 久久成熟 | 亚洲国产日本 | 3d黄动漫免费看 | a色视频 | 又色又爽又黄高潮的免费视频 | 黄色av观看 | 在线免费看黄网站 | 欧美日韩在线精品一区二区 | 久久精品区| 成人免费大片黄在线播放 | 中文字幕在线观看视频一区二区三区 | 日韩免费av片 | 亚洲永久国产精品 | 超碰成人网 | 91av福利视频 | 久久精品一区二区三区国产主播 | 91激情小视频 | 久久视频在线看 | 狠狠gao| 国产精品久久久久久一区二区三区 | 中文字幕 国产专区 | 午夜影院一级片 | 久久综合9988久久爱 | 日韩视 | 亚洲男男gaygay无套 | www最近高清中文国语在线观看 | 中文字幕专区高清在线观看 | 婷婷丁香国产 | 中文字幕视频网 | 精品在线视频一区 | 国产不卡一二三区 | 色综合久久99 | 国产日韩中文字幕 | 欧美激情第八页 | 91精品视屏 | 久久国产欧美日韩精品 | 欧美一二在线 | 日本黄色免费电影网站 | 久一网站| 狠狠激情中文字幕 | 精品一区二区电影 | 欧美日韩国产精品一区二区亚洲 | 成人av在线观 | 69精品视频 | 黄网站app在线观看免费视频 | 成人a视频在线观看 | 久久国产精品久久国产精品 | 91在线91 | 欧美成人黄 | 91精品久久久久久久99蜜桃 | 久草免费在线观看 | 欧美a视频在线观看 | 久久久久免费视频 | 不卡的av电影 | ww亚洲ww亚在线观看 | 人成免费网站 | 91中文在线视频 | 天天干天天天 | 免费观看一级视频 | 成人av观看 | 午夜精品福利在线 | 欧美日韩中文视频 | 久久精品9| 精品一区 在线 | 久久久影院一区二区三区 | 久久论理| 在线免费观看视频一区二区三区 | 国产视频2 | 日韩毛片在线免费观看 | 色婷婷www| 色综合五月 | 97电影在线看视频 | 玖玖999 | 国产精品国产三级国产aⅴ9色 | 婷婷五月在线视频 | 欧美精品国产综合久久 | 在线黄色国产电影 | 久久99精品国产麻豆宅宅 | 韩国av免费在线观看 | 国产淫a| 日韩在线免费小视频 | 美女免费视频观看网站 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 日韩视频1 | 四虎影视欧美 | 亚洲午夜剧场 | 日韩欧美视频免费在线观看 | 久久久久久久久久久高潮一区二区 | 久久超碰97| 欧美日本在线视频 | 成人一区二区三区在线 | 日日操日日插 | 国产网红在线 | 深夜激情影院 | 成人av一区二区兰花在线播放 | 成人免费视频网址 | 成人 亚洲 欧美 | 五月婷婷在线观看 | 国产精品21区 | 免费看国产一级片 | 综合网中文字幕 | 精品一区二区免费 | 欧美亚洲国产精品久久高清浪潮 |