亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

JavaScript學習

2024-04-27 15:06:12
字體:
來源:轉載
供稿:網友

一、簡介

定義: javaScript是一門動態弱類型的解釋型編程語言,增強頁面動態效果,實現頁面與用戶之間的實時 動態的交互。

Javascript是由三部分組成:ECMAscript、DOM、BOM

ECMAScript由ECMA-262定義,提供核心語言功能(ECMA是歐洲計算機制造商協會)DOM(Document Object Model)文檔對象模型,提供訪問和操作網頁內容的方法和接口BOM(Browser Object Model)瀏覽器對象模型,提供與瀏覽器交互的方法和接口

注釋

JavaScript中代碼注釋 單行 // 多行 /* */

引入文件

1.引入外部文件
<script type="text/javascript" src="JS文件"></script>
2.存放在HTML的 head 標簽 或者 body 標簽中
<script type="text/javascript"> js代碼內容<script>HTML的head中HTML的body代碼塊底部(推薦)
3.為什么要放在``代碼塊底部?
HTML代碼從上到下執行,先加載CSS,避免html出現無樣式狀態 將JavaScript代碼放在可以讓網頁盡快的呈現給用戶,減少瀏覽者的等待時間,避免因為JS代碼塊阻塞網頁的呈現。
變量
需要注意的是:局部變量必須以var開頭申明,如果不寫var則為全局變量

代碼示例

<script type="text/javascript"> // 全局變量 name = 'nick'; function func(){ // 局部變量 var age = 18; // 全局變量 gender = "man" }</script>(注:需要注意變量提升,就是把變量位置放到函數體的最上方)

二、運算符

1.算術運算符

一元算術
+ 一元加,數值不會產生影響 對非數值應用一元加運算時,會調用Number()轉型函數對這個值進行轉換
- 一元減,轉換為負數 ~
++ 遞增1 通過Number()轉型為數字,再加1,再重新賦值給操作數值
– 遞減1 ~
二元算術
+ 加法
- 減法
* 乘法
/ 除法
% 取模
二元運算過程
1、如果其中一個操作數是對象,則對象會轉換為原始值:日期對象通過toString()方法執行轉換,其他對象通過valueOf()方法執行轉換,如果結果還不是原始值,則再使用toString()方法轉換2、在進行了對象到原始值的轉換后,如果其中一個操縱數是字符串的話,另一個操作數也會轉換為字符串,進行字符串拼接。3、兩個操作數都將轉換成數字或NaN,進行加法操作

2.比較運算符

=== 嚴格運算符 比較過程沒有任何類型轉換
!== 嚴格運算符 ===的結果取反
== 相等運算符 如果兩個操作值不是同一類型,相等運算符會嘗試進行一些類型轉換,然后再進行比較
!= 不相等運算符 ==的結果取反
> 大于運算符
>= 大于等于運算符
小于運算符
小于等于運算符
嚴格運算符比較過程
1、如果兩個值類型不同則返回false2、如果兩個值類型相同,值相同,則返回true,否則返回false3、如果兩個值引用同一個對象,則返回true,否則,返回falseconsole.log([] === []);//falseconsole.log({} === {});//faslevar a = {};b = a;console.log(a === b);//true
相等運算符比較過程
對象類型和原始類型比較1、對象類型會先使用valueOf()轉換成原始值,如果結果還不是原始值,則再使用toString()方法轉換,在進行比較(日期類只允許使用toString()方法轉換為字符串)2、在對象轉換為原始值之后,如果兩個操作數都是字符串,則進行字符串的比較3、在對象轉換為原始值之后,如果至少有一個操作數不是字符串,則兩個操作數都將通過Number()轉型函數轉換成數字進行數值比較注:如果一個值是null,另一個值是undefined,則返回true;console.log(null == undefined);//true如果一個值是null,另一個值是0,則返回falseconsole.log(null == 0);//false空字符串或空格串會轉成0console.log(null == []);//falseconsole.log(null == '');//falseconsole.log([] == ' ');//false,相當于'' == ' 'console.log([] == '');//true,相當于'' == ''console.log(0 == '');//true

3.邏輯運算符

! 非(兩個!!表示Boolean()轉型函數) 返回一個布爾值
&& 與 兩個操作都為true時返回true,否則返回false(返回值不一定是布爾值),可以多個連用(..&&..&&..)
|| 或 兩個操作都是false時返回false,否則返回true(返回值不一定是布爾值),可以多個連用(..||..||..)
七個假值consloe.log(!!undefined);//falseconsole.log(!!null);//falseconsole.log(!!0);//falseconsole.log(!!-0);//falseconsole.log(!!NaN);//falseconsole.log(!!'');//falseconsole.log(!!false);//falseconsole.log(!!{});//trueconsole.log(!![]);//true&&常用操作1> 取代if語句//前面條件成立則運行后面操作(a == b) && dosomething();2> 用于回調函數//若沒有給參數a傳值,則a默認為undefined假值,所以不執行a()。function fn(a){ a && a();}| | 常用操作1> 變量設置為默認值//如果沒有向參數a傳入任何參數,則將該參數設置為空對象function func(a){ a = a || {};}

三、數據類型

特殊值

null 表示一個空對象指針,常用來描述“空值”;undefined  表示變量未定義。

數字(Number)

JavaScript中不區分整數和浮點數,所有數字均用浮點數值表示。
轉換:
parseInt(..) 將某值轉換成整數,不成功則NaNparseFloat(..) 將某值轉換成浮點數,不成功則NaN
特殊值:
NaN,非數字??梢允褂?isNaN(num) 來判斷。 Infinity,無窮大??梢允褂?isFinite(num) 來判斷。
Number 對數字的支持
Number.MAX_VALUE 最大數值
Number.MIN_VALUE 最小數值
Number.NaN 非數字
Number.NEGATIVE_INFINITY 負無窮大
Number.POSITIVE_INFINITY 正無窮大
Number.toExponential( ) 返回四舍五入的科學計數法,加參數為保留幾位
Number.toFixed( ) 小數點后面的數字四舍五入,加參數為保留幾位
Number.toPRecision( ) 四舍五入,自動調用toFixed()或toExponential()
Number.toLocaleString( ) 把數字轉換成本地格式的字符串
Number.toString( ) 將數字轉換成字符串
Number.valueOf( ) 返回原始數值

字符串(String)

String.length 字符串的長度
String.trim() 移除空白
String.trimLeft() 移除左側空白
String.trimRight() 移除右側空白
String.concat(value,……) 拼接
String.slice(start,end) 切片
String.split() 分割
String.search() 從頭開始匹配,返回匹配成功的第一個位置(g無效)
String.match( ) 全局搜索,如果正則中有g表示找到全部,否則只找到第一個
String.replace( ) 替換,正則中有g則替換所有,否則只替換第一個匹配項; (待修改)
String.charAt( ) 返回字符串中的第n個字符
String.charCodeAt( ) 返回字符串中的第n個字符的代碼
String.fromCharCode( ) 從字符編碼創建—個字符串
String.indexOf( ) 查找子字符串位置
String.lastIndexOf( ) 查找子字符串位置(從尾部開始查詢)
String.localeCompare( ) 用本地特定的順序來比較兩個字符串
String.substr() 抽取一個子串
String.substring( ) 返回字符串的一個子串
String.toLocaleLowerCase( ) 把字符串轉換小寫(針對地區,在不知道程序在哪個語言環境中運行時用)
String.toLocaleUpperCase( ) 將字符串轉換成大寫(針對地區)/td>
String.toLowerCase() 小寫
String.toUpperCase( ) 大寫
String.toString( ) 返回原始字符串值
String.valueOf( ) 返回原始字符串值

轉義字符

/0 空字節
/n 換行
/t 制表符
/b 空格
/r 回車
/f 換頁
// 斜杠
/’ 單引號
/” 雙引號

布爾類型(Boolean)

true(真)和false(假)
toString() 返回Boolean的字符串值(‘true’或’false’)
toLocaleString() 返回Boolean的字符串值(‘true’或’false’)
valueOf() 返回Boolean的原始布爾值(true或false)

數組

var name = Array("nick","jenny");var name = ["nick","jenny"];
Array.length 數組的大小
Array.push() 尾部添加元素
Array.pop() 刪除并返回數組的最后一個元素
Array.unshift() 在數組頭部插入一個元素
Array.shift( ) 在數組頭部移除一個元素
Array.slice( ) 切片
Array.reverse( ) 反轉
Array.join( ) 將數組元素連接起來以構建一個字符串
Array.concat( ) 拼接
Array.sort( ) 排序
Array 對數組的內部支持
Array.splice( start, deleteCount, value, …) 插入、刪除或替換數組的元素
obj.splice(n,0,val) 指定位置插入元素
obj.splice(n,1,val) 指定位置替換元素
obj.splice(n,1) 指定位置刪除元素
Array.toLocaleString( ) 把數組轉換成局部字符串
Array.toString( ) 將數組轉換成一個字符串

Math

Math對象是一個靜態對象,而不是構造函數。實際上,Math只是一個由于JavaScript設置的對象命名空間,用于存儲數學函數 作用是執行普通的算數任務
常量
Math.E 常量e,自然對數的底數。
Math.LN10 10的自然對數。
Math.LN2 2的自然對數。
Math.LOG10E 以10為底的e的對數。
Math.LOG2E 以2為底的e的對數。
Math.PI 常量圓周率。
Math.SQRT1_2 2的平方根除以1。
Math.SQRT2 2的平方根。
靜態函數
Math.abs( ) 計算絕對值。
Math.acos( ) 計算反余弦值。
Math.asin( ) 計算反正弦值。
Math.atan( ) 計算反正切值。
Math.atan2( ) 計算從X軸到一個點的角度。
Math.ceil( ) 對一個數上舍入。
Math.cos( ) 計算余弦值。
Math.exp( ) 計算e的指數。
Math.floor( ) 對一個數下舍人。
Math.log( ) 計算自然對數。
Math.max( ) 返回兩個數中較大的一個。
Math.min( ) 返回兩個數中較小的一個。
Math.pow( ) 計算xy。
Math.random( ) 計算一個隨機數。
Math.round( ) 舍入為最接近的整數。
Math.sin( ) 計算正弦值。
Math.sqrt( ) 計算平方根。
Math.tan( ) 計算正切值。

四、語句

1.條件語句

JavaScript中支持兩個條件語句,分別是:if 和 switch
if 語句:
//if語句if(條件){ }else if(條件){ }else{ }
Switch 語句:
//switch語句,name等于nick是執行第一個case,等于第二個執行第二個case,其它執行default.switch(name){ case 'nick': age = 18; break; case 'jenny': age = 21; break; default : age = 0; }

2.循環語句

JavaScript中支持四種循環語句,分別是:for、for in、while、do-while
for循環
var names = ["nick", "jenny"];for(var i=0;i<names.length;i++){ console.log(i); //索引 console.log(names[i]);}
for in 循環
var names = ["nick", "jenny"];for(var index in names){ console.log(index); console.log(names[index]);}
while 循環
while(條件){ // break; // continue;}
do-while 循環
//循環的代碼至少執行一次,結果為1 var num = 0; do { num++; }while (num>10);

3.label 語句

label語句可以理解為跳出任意循環
未加 label 語句實例
//輸出結果為55//i和j都循環為到5時,跳出了兩層循環 <script> var num = 0; outPoint: for (var i=0;i<10;i++) { for (var j=0;j<10;j++) { if (i==5 && j==5) { break outPoint; } num++; } } console.log(num); </script>
加 label 實例
//輸出結果為55//i和j都循環為到5時,跳出了兩層循環 <script> var num = 0; outPoint: for (var i=0;i<10;i++) { for (var j=0;j<10;j++) { if (i==5 && j==5) { break outPoint; } num++; } } console.log(num); </script>

4.異常處理

主動跑出異常 throw Error(’xxx’)try { //這段代碼從上往下運行,其中任何一個語句拋出異常該代碼塊就結束運行}catch (e) { // 如果try代碼塊中拋出了異常,catch代碼塊中的代碼就會被執行。 //e是一個局部變量,用來指向Error對象或者其他拋出的對象}finally { //無論上述代碼怎么,finally代碼塊始終會執行}

五、函數Function

函數定義的三種方式

//普通函數function func(arg){ return true;}//匿名函數var func = function(arg){ retrun "nick";}//自執行函數(function(arg){ console.log(arg);})('nick')

函數參數

函數參數的個數可以小于實際需要傳參的個數,沒傳參的默認為undefined,參數傳多默認不起作用function man(name,age) { console.log(name,age);}man("nick",18); //nick 18man("nick"); //nick undefinedman("nick",18,19); //nick 18
arguments 可接收所有參數,返回一個數組
function man() { console.log(arguments);}man("nick",18); //["nick", 18]man("nick"); //["nick"]man("nick",18,19); //["nick", 18, 19]

函數的作用域與作用域鏈

JavaScript中沒有塊級作用域var name = 'nick';(function main(){ console.log(name);//undefined if(1){ var name = 'jenny'; } console.log(name);//jenny})();consloe.log(name);nick//輸出結果第一個為underfined//聲明需要提前,在JavaScript引擎“預編譯”時進行,函數在被執行之前,回將其中的變量全部聲明,而不賦值

作用域鏈

每個構造函數都有一個內部對象指針,指向原型對象,而原型對象也包含一個指向構造函數的指針。如此層層遞進,形成作用域鏈條var name = 'nick'; function Main() { function F1(){ var name = 'jenny'; console.log(name);//jenny } function F2() { console.log(name);//nick } F1(); F2(); } Main();// 從內到外的優先級尋找// F2() 的作用域鏈為 F2()-->Main()

閉包:

閉包就是能夠讀取其他函數內部變量的函數functin f1(){ var n = 1; Add = function(){ n++; }; function f2(){ console.log(n); } return f2;}var result=f1();result();//1Add();result();//2//result 就是閉包f2函數//函數f1中的局部變量n一直保存在內存中,并沒有在f1調用后被清除閉包使函數中的變量都被保存在內存中,內存消耗大,所以少用閉包,否則會造成網頁的性能低,在IE中可能導致內存泄漏。所以在退出函數之前,將不使用的局部變量全部刪除

六、面向對象

面向對象的三大特性:

封裝:隱藏代碼實現的細節,實現代碼的模塊化繼承:擴展已經存在的代碼模塊,實現代碼重用多態:接口的不同實現方式,實現接口重用

關鍵字:

this 代指此時的對象new 創建對象時必須使用

構造函數模式:

function Foo(name,age){ this.name = name; this.age = age; this.Func = function(){ return this.Name + this.age; }}var obj = new Foo("nick",18);var ret = obj.Func();console.log(ret);var obj2 = new Foo("jenny",21);上述模式把同樣的函數封裝到了不同對象,造成了內存浪費。

原型模式(prototype)

function Foo(name,age) { this.Name = name; this.Age = age;}Foo.prototype = { GetInfo: function () { var str = " is good"; return this.Name + str; }, Func: function () { return this.Name + this.Age; }};var obj = new Foo("nick",18);console.log(obj.Name);//nickconsole.log(obj.Age);//18var ret = obj.GetInfo();console.log(ret);//nick is goodvar ret2 = obj.Func();console.log(ret2);//nick18var obj2 = new Foo("nick",18);所有的構造函數的prototype屬性都指向另一個對象(同一塊內存地址),這個對象的所有屬性和方法,都會被構造函數的實例繼承.

Prototype 模式的驗證方法

1. isPrototypeOf(): 用來判斷一個對象是否存在于另一個對象的原型鏈中Foo.prototype.isPrototypeOf(obj)trueFoo.prototype.isPrototypeOf(obj2)true2、hasOwnProperty(): 用來判斷某一個對象(不包括原型鏈)是否具有指定屬性。obj.hasOwnProperty('Name')trueobj.hasOwnProperty('Age')true

in 運算符

判斷某個實例是否具有某個屬性'Name' in objtrue'Age' in objtrue

七、其他

1、序列化

JSON.stringfy(obj) 序列化JSON.parse(str) 反序列化

2、轉義

decodeURL() URL中未轉義的字符decodeURLComponent() URL組件中的未轉義字符encodeURL() URL中的轉義字符encodeURLComponent() 轉義URL組件中的字符escape() 對字符串轉義unescape() 給轉義字符串解碼URLError 由URL的編碼和解碼方法拋出

3、eval

JavaScript中的eval既可以運行代碼也可以獲取返回值a=eval('1+1');console.log(a);// 2
eval()
EvalError 執行字符串中的JavaScript代碼

4、正則表達式

var p = /nick/g;console.log(p.test('nickjennynick')); // trueconsole.log(p.exec('nickjennynick')); // ["nick", index: 0, input: "nickjennynick"]JavaScript中支持正則表達式,其主要提供了兩功能: test(string) 用于檢測正則是否匹配 exec(string) 用于獲取正則匹配的內容

匹配模式:

g:表示全局(global)模式,匹配所有字符串,不會匹配到第一項時停止 i:表示不區分大小寫(case-insensitive)模式 m:表示多行(multiline)模式,到達一行文本末尾時還會繼續查找下一行中是否存在匹配的項

括號分組:

console.log(/(n)(i)ck/.exec('nickjenny')); // console.log(/(n)(i)ck/.exec('nickjenny'))console.log(/(n)(i)ck{2}/.exec('nickkjenny')); // ["nickk", "n", "i", index: 0, input: "nickkjenny"]

元字符

元字符 名稱 匹配對象
. 點號 單個任意字符(除回車/r、換行/n、行分隔符/u2028和段分隔符/u2029外)
[] 字符組 列出的單個任意字符
* 星號 匹配0次或多次
[^] 排除型字符組 未列出的單個任意字符
? 問號 匹配0次或1次
+ 加號 匹配1次或多次
{min,max} 區間量詞 匹配至少min次,最多max次
^ 脫字符 行的起始位置
$ 美元符 行的結束位置
| 豎線 分隔兩邊的任意一個表達式
() 括號 限制多選結構的范圍,標注量詞作用的元素,為反向引用捕獲文本
/1,/2… 反向引用 匹配之前的第一、第二…組括號內的表達式匹配的文本

匹配規則簡寫

/d 數字,等同于[0-9]
/D 非數字,等同于[^0-9]
/s 空白字符
/S 非空白字符
/w 字母、數字、下劃線,等同于[0-9A-Za-z_](漢字不屬于/w)
/W 非字母、數字、下劃線,等同于[^0-9A-Za-z_]

5、時間處理

時間操作中兩種時間:時間統一時間本地時間(東8區)

Date 方法

Date 操作日期和時間的對象Date.getDate( ) 返回一個月中的某一天Date.getDay( ) 返回一周中的某一天Date.getFullYear( ) 返回Date對象的年份字段Date.getHours( ) 返回Date對象的小時字段Date.getMilliseconds( ) 返回Date對象的毫秒字段Date.getMinutes( ) 返回Date對象的分鐘字段Date.getMonth( ) 返回Date對象的月份字段Date.getSeconds( ) 返回Date對象的秒字段Date.getTime( ) 返回Date對象的毫秒表示Date.getTimezoneOffset( ) 判斷與GMT的時間差Date.getUTCDate( ) 返回該天是一個月的哪一天(世界時)Date.getUTCDay( ) 返回該天是星期幾(世界時)Date.getUTCFullYear( ) 返回年份(世界時)Date.getUTCHours( ) 返回Date對象的小時字段(世界時)Date.getUTCMilliseconds( ) 返回Date對象的毫秒字段(世界時)Date.getUTCMinutes( ) 返回Date對象的分鐘字段(世界時)Date.getUTCMonth( ) 返回Date對象的月份(世界時)Date.getUTCSeconds( ) 返回Date對象的秒字段(世界時)Date.getYear( ) 返回Date對象的年份字段(世界時)Date.parse( ) 解析日期/時間字符串Date.setDate( ) 設置一個月的某一天Date.setFullYear( ) 設置年份,也可以設置月份和天Date.setHours( ) 設置Date對象的小時字段、分鐘字段、秒字段和毫秒字段Date.setMilliseconds( ) 設置Date對象的毫秒字段Date.setMinutes( ) 設置Date對象的分鐘字段和秒字段Date.setMonth( ) 設置Date對象的月份字段和天字段Date.setSeconds( ) 設置Date對象的秒字段和毫秒字段Date.setTime( ) 以毫秒設置Date對象Date.setUTCDate( ) 設置一個月中的某一天(世界時)Date.setUTCFullYear( ) 設置年份、月份和天(世界時)Date.setUTCHours( ) 設置Date對象的小時字段、分鐘字段、秒字段和毫秒字段(世界時)Date.setUTCMilliseconds( ) 設置Date對象的毫秒字段(世界時)Date.setUTCMinutes( ) 設置Date對象的分鐘字段和秒字段(世界時)Date.setUTCMonth( ) 設置Date對象的月份字段和天數字段(世界時)Date.setUTCSeconds( ) 設置Date對象的秒字段和毫秒字段(世界時)Date.setYear( ) 設置Date對象的年份字段Date.toDateString( ) 返回Date對象日期部分作為字符串Date.toGMTString( ) 將Date轉換為世界時字符串Date.toLocaleDateString( ) 回Date對象的日期部分作為本地已格式化的字符串Date.toLocaleString( ) 將Date轉換為本地已格式化的字符串Date.toLocaleTimeString( ) 返回Date對象的時間部分作為本地已格式化的字符串Date.toString( ) 將Date轉換為字符串Date.toTimeString( ) 返回Date對象日期部分作為字符串Date.toUTCString( ) 將Date轉換為字符串(世界時)Date.UTC( ) 將Date規范轉換成毫秒數Date.valueOf( ) 將Date轉換成毫秒表示
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品白嫩初高中害羞小美女| 91视频8mav| 91亚洲永久免费精品| 亚洲精品视频免费在线观看| 国产精品久久999| 久久九九精品99国产精品| 亚洲精品国产精品自产a区红杏吧| 日韩久久午夜影院| 国产精品日日摸夜夜添夜夜av| 91精品国产综合久久久久久蜜臀| 久久综合伊人77777| 精品国产美女在线| 国产亚洲精品激情久久| 久久久视频免费观看| 在线视频中文亚洲| 日韩在线免费观看视频| 亚洲成av人影院在线观看| 亚洲欧美一区二区激情| 久久久免费在线观看| 国产精彩精品视频| 国产精品一区二区三区毛片淫片| 国产精品久久久久久av福利软件| 国产亚洲美女精品久久久| 亚洲色在线视频| 欧美电影在线观看网站| 亚洲欧美中文日韩在线v日本| 亚洲成人av在线| 成人黄色av网站| 国产亚洲a∨片在线观看| 久久久国产一区二区三区| 亚洲精品久久久久久下一站| 欧美日韩一区二区在线| 国产区精品在线观看| 亚洲天堂一区二区三区| www.亚洲一区| 久久香蕉国产线看观看网| 欧美大尺度在线观看| 91久久久在线| 久久久免费电影| 成人国产精品一区二区| 日韩女在线观看| 日本一本a高清免费不卡| 亚洲精品网址在线观看| 日本精品视频在线播放| 欧美小视频在线观看| www.日韩视频| 日韩欧美国产网站| 国产精品劲爆视频| 日日狠狠久久偷偷四色综合免费| 91精品免费看| 亚洲国产欧美一区二区三区久久| 亚洲视频电影图片偷拍一区| 91高清视频在线免费观看| 亚洲丝袜一区在线| 亚洲欧美另类在线观看| 精品毛片网大全| 精品国产欧美一区二区五十路| 91在线高清免费观看| 欧美不卡视频一区发布| 久久久精品美女| 黄色成人在线播放| 欧美大胆在线视频| 午夜精品久久久久久久久久久久久| 久久精品视频播放| 亚洲成人动漫在线播放| 在线视频免费一区二区| 国产精品69久久| 国产精自产拍久久久久久蜜| 亚洲免费一在线| 中文字幕日韩av| 国产丝袜视频一区| 亚洲免费电影在线观看| 日韩一二三在线视频播| 97国产精品久久| 亚洲最新在线视频| 欧美激情久久久久久| 91av在线网站| 欧美精品在线看| 91精品综合视频| 91精品久久久久久综合乱菊| 久久99国产精品自在自在app| 久久久成人的性感天堂| 亚洲第一免费网站| 国产精品欧美日韩| 国产日韩欧美夫妻视频在线观看| 日韩欧亚中文在线| 午夜精品福利电影| 疯狂欧美牲乱大交777| 国产一级揄自揄精品视频| 在线播放国产一区中文字幕剧情欧美| 亚洲成人性视频| 性色av一区二区三区| 国产成人aa精品一区在线播放| 中文字幕国产日韩| 国产精品精品国产| 国产精品日韩在线一区| 国产精品自产拍在线观看中文| 久久久久久久国产| 久久久久久久久网站| 久久综合九色九九| 97精品免费视频| 久久久99免费视频| 在线观看欧美成人| 中文字幕在线观看日韩| 69久久夜色精品国产69| 成人写真福利网| 色综合久综合久久综合久鬼88| 中日韩午夜理伦电影免费| 欧美激情精品久久久久久蜜臀| 国产精品久久久久一区二区| 一区二区三区美女xx视频| 国产精品视频在线播放| 国产精品爽爽爽爽爽爽在线观看| 91精品美女在线| 欧美xxxx18国产| 北条麻妃一区二区在线观看| 中文字幕日韩在线观看| www.久久久久| 久久亚洲一区二区三区四区五区高| 久久久av电影| 68精品国产免费久久久久久婷婷| 中文字幕少妇一区二区三区| 欧美肥婆姓交大片| 秋霞av国产精品一区| 欧美xxxx14xxxxx性爽| 一区二区欧美亚洲| 日韩最新中文字幕电影免费看| 成人信息集中地欧美| 91在线视频九色| 日韩视频在线免费| 国产日韩欧美另类| 欧美黄色免费网站| 91天堂在线观看| 中文字幕亚洲字幕| 成人免费激情视频| 亚洲少妇中文在线| 日韩精品欧美国产精品忘忧草| 成年无码av片在线| 国产欧美一区二区白浆黑人| 97色在线视频| 亚洲国产精品国自产拍av秋霞| 国产日韩视频在线观看| 成人亚洲激情网| 亚洲黄色免费三级| 亚洲美女av黄| 热99久久精品| 国产噜噜噜噜久久久久久久久| 国产精品大片wwwwww| 91影视免费在线观看| 亚洲国产第一页| 亚洲国产私拍精品国模在线观看| 国产亚洲激情在线| 在线精品播放av| 欧美电影免费在线观看| 麻豆国产精品va在线观看不卡| 欧美一区二区三区……| 黑人欧美xxxx| 国产成人亚洲精品| y97精品国产97久久久久久| 亚洲欧美999| 亚洲国产成人在线视频| 日韩专区中文字幕| 日韩精品在线第一页| 精品少妇一区二区30p|