国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

深入理解JavaScript之變量對象(Variable Object)

共 7758字,需瀏覽 16分鐘

 ·

2021-03-27 15:38


英文  | http://dmitrysoshnikov.com/ecmascript/chapter-2-variable-object/


介紹

JavaScript編程的時(shí)候總避免不了聲明函數(shù)和變量,以成功構(gòu)建我們的系統(tǒng),但是解釋器是如何并且在什么地方去查找這些函數(shù)和變量呢?我們引用這些對象的時(shí)候究竟發(fā)生了什么?
大多數(shù)ECMAScript程序員應(yīng)該都知道變量與執(zhí)行上下文有密切關(guān)系:
var a = 10; // 全局上下文中的變量
(function () { var b = 20; // function上下文中的局部變量})();
alert(a); // 10alert(b); // 全局變量 "b" 沒有聲明

并且,很多程序員也都知道,當(dāng)前ECMAScript規(guī)范指出獨(dú)立作用域只能通過“函數(shù)(function)”代碼類型的執(zhí)行上下文創(chuàng)建。也就是說,相對于C/C++來說,ECMAScript里的for循環(huán)并不能創(chuàng)建一個(gè)局部的上下文。

for (var k in {a: 1, b: 2}) {  alert(k);}
alert(k); // 盡管循環(huán)已經(jīng)結(jié)束但變量k依然在當(dāng)前作用域

我們來看看一下,我們聲明數(shù)據(jù)的時(shí)候到底都發(fā)現(xiàn)了什么細(xì)節(jié)。

數(shù)據(jù)聲明

如果變量與執(zhí)行上下文相關(guān),那變量自己應(yīng)該知道它的數(shù)據(jù)存儲在哪里,并且知道如何訪問。這種機(jī)制稱為變量對象(variable object)。

變量對象(縮寫為VO)是一個(gè)與執(zhí)行上下文相關(guān)的特殊對象,它存儲著在上下文中聲明的以下內(nèi)容:

變量 (var, 變量聲明);函數(shù)聲明 (FunctionDeclaration, 縮寫為FD);函數(shù)的形參

舉例來說,我們可以用普通的ECMAScript對象來表示一個(gè)變量對象:

VO = {};

就像我們所說的, VO就是執(zhí)行上下文的屬性(property):

activeExecutionContext = {  VO: {    // 上下文數(shù)據(jù)(var, FD, function arguments)  }};

只有全局上下文的變量對象允許通過VO的屬性名稱來間接訪問(因?yàn)樵谌稚舷挛睦铮謱ο笞陨砭褪亲兞繉ο?,稍后會詳?xì)介紹),在其它上下文中是不能直接訪問VO對象的,因?yàn)樗皇莾?nèi)部機(jī)制的一個(gè)實(shí)現(xiàn)。

當(dāng)我們聲明一個(gè)變量或一個(gè)函數(shù)的時(shí)候,和我們創(chuàng)建VO新屬性的時(shí)候一樣沒有別的區(qū)別(即:有名稱以及對應(yīng)的值)。

例如:

var a = 10;
function test(x) { var b = 20;};
test(30);

對應(yīng)的變量對象是:

// 全局上下文的變量對象VO(globalContext) = {  a: 10,  test: function>};
// test函數(shù)上下文的變量對象VO(test functionContext) = { x: 30, b: 20};

在具體實(shí)現(xiàn)層面(以及規(guī)范中)變量對象只是一個(gè)抽象概念。(從本質(zhì)上說,在具體執(zhí)行上下文中,VO名稱是不一樣的,并且初始結(jié)構(gòu)也不一樣。

不同執(zhí)行上下文中的變量對象

對于所有類型的執(zhí)行上下文來說,變量對象的一些操作(如變量初始化)和行為都是共通的。從這個(gè)角度來看,把變量對象作為抽象的基本事物來理解更為容易。同樣在函數(shù)上下文中也定義和變量對象相關(guān)的額外內(nèi)容。

抽象變量對象VO (變量初始化過程的一般行為)  ╠══> 全局上下文變量對象GlobalContextVO  ║        (VO === this === global)  ╚══> 函數(shù)上下文變量對象FunctionContextVO           (VO === AO, 并且添加了<arguments>和<formal parameters>)

我們來詳細(xì)看一下:

全局上下文中的變量對象

首先,我們要給全局對象一個(gè)明確的定義

全局對象(Global object) 是在進(jìn)入任何執(zhí)行上下文之前就已經(jīng)創(chuàng)建了的對象;
這個(gè)對象只存在一份,它的屬性在程序中任何地方都可以訪問,全局對象的生命周期終止于程序退出那一刻。

全局對象初始創(chuàng)建階段將Math、String、Date、parseInt作為自身屬性,等屬性初始化,同樣也可以有額外創(chuàng)建的其它對象作為屬性(其可以指向到全局對象自身)。

例如,在DOM中,全局對象的window屬性就可以引用全局對象自身(當(dāng)然,并不是所有的具體實(shí)現(xiàn)都是這樣):

global = {  Math: <...>,  String: <...>  ...  ...  window: global //引用自身};

當(dāng)訪問全局對象的屬性時(shí)通常會忽略掉前綴,這是因?yàn)槿謱ο笫遣荒芡ㄟ^名稱直接訪問的。

不過我們依然可以通過全局上下文的this來訪問全局對象,同樣也可以遞歸引用自身。例如,DOM中的window。綜上所述,代碼可以簡寫為:

String(10); // 就是global.String(10);
// 帶有前綴window.a = 10; // === global.window.a = 10 === global.a = 10;this.b = 20; // global.b = 20;

因此,回到全局上下文中的變量對象——在這里,變量對象就是全局對象自己:

VO(globalContext) === global;

非常有必要要理解上述結(jié)論,基于這個(gè)原理,在全局上下文中聲明的對應(yīng),我們才可以間接通過全局對象的屬性來訪問它(例如,事先不知道變量名稱)。

var a = new String('test');
alert(a); // 直接訪問,在VO(globalContext)里找到:"test"
alert(window['a']); // 間接通過global訪問:global === VO(globalContext): "test"alert(a === this.a); // true
var aKey = 'a';alert(window[aKey]); // 間接通過動態(tài)屬性名稱訪問:"test"

函數(shù)上下文中的變量對象

在函數(shù)執(zhí)行上下文中,VO是不能直接訪問的,此時(shí)由活動對象(activation object,縮寫為AO)扮演VO的角色。

VO(functionContext) === AO;

活動對象是在進(jìn)入函數(shù)上下文時(shí)刻被創(chuàng)建的,它通過函數(shù)的arguments屬性初始化。arguments屬性的值是Arguments對象:

AO = {    arguments: <ArgO>};

Arguments對象是活動對象的一個(gè)屬性,它包括如下屬性:

  1. callee — 指向當(dāng)前函數(shù)的引用

  2. length — 真正傳遞的參數(shù)個(gè)數(shù)

  3. properties-indexes (字符串類型的整數(shù)) 屬性的值就是函數(shù)的參數(shù)值(按參數(shù)列表從左到右排列)。properties-indexes內(nèi)部元素的個(gè)數(shù)等于arguments.length. properties-indexes 的值和實(shí)際傳遞進(jìn)來的參數(shù)之間是共享的。

例如:

function foo(x, y, z) {
// 聲明的函數(shù)參數(shù)數(shù)量arguments (x, y, z) alert(foo.length); // 3
// 真正傳進(jìn)來的參數(shù)個(gè)數(shù)(only x, y) alert(arguments.length); // 2
// 參數(shù)的callee是函數(shù)自身 alert(arguments.callee === foo); // true
// 參數(shù)共享
alert(x === arguments[0]); // true alert(x); // 10
arguments[0] = 20; alert(x); // 20
x = 30; alert(arguments[0]); // 30
// 不過,沒有傳進(jìn)來的參數(shù)z,和參數(shù)的第3個(gè)索引值是不共享的
z = 40; alert(arguments[2]); // undefined
arguments[2] = 50; alert(z); // 40
}
foo(10, 20);

這個(gè)例子的代碼,在當(dāng)前版本的Google Chrome瀏覽器里有一個(gè)bug  — 即使沒有傳遞參數(shù)z,z和arguments[2]仍然是共享的。

處理上下文代碼的2個(gè)階段

現(xiàn)在我們終于到了本文的核心點(diǎn)了。執(zhí)行上下文的代碼被分成兩個(gè)基本的階段來處理:

  1. 進(jìn)入執(zhí)行上下文

  2. 執(zhí)行代碼

變量對象的修改變化與這兩個(gè)階段緊密相關(guān)。

注:這2個(gè)階段的處理是一般行為,和上下文的類型無關(guān)(也就是說,在全局上下文和函數(shù)上下文中的表現(xiàn)是一樣的)。

進(jìn)入執(zhí)行上下文

當(dāng)進(jìn)入執(zhí)行上下文(代碼執(zhí)行之前)時(shí),VO里已經(jīng)包含了下列屬性(前面已經(jīng)說了):

函數(shù)的所有形參(如果我們是在函數(shù)執(zhí)行上下文中)

— 由名稱和對應(yīng)值組成的一個(gè)變量對象的屬性被創(chuàng)建;沒有傳遞對應(yīng)參數(shù)的話,那么由名稱和undefined值組成的一種變量對象的屬性也將被創(chuàng)建。

所有函數(shù)聲明(FunctionDeclaration, FD)

—由名稱和對應(yīng)值(函數(shù)對象(function-object))組成一個(gè)變量對象的屬性被創(chuàng)建;如果變量對象已經(jīng)存在相同名稱的屬性,則完全替換這個(gè)屬性。

所有變量聲明(var, VariableDeclaration)

— 由名稱和對應(yīng)值(undefined)組成一個(gè)變量對象的屬性被創(chuàng)建;如果變量名稱跟已經(jīng)聲明的形式參數(shù)或函數(shù)相同,則變量聲明不會干擾已經(jīng)存在的這類屬性。

讓我們看一個(gè)例子:

function test(a, b) {  var c = 10;  function d() {}  var e = function _e() {};  (function x() {});}
test(10); // call

當(dāng)進(jìn)入帶有參數(shù)10的test函數(shù)上下文時(shí),AO表現(xiàn)為如下:

AO(test) = {  a: 10,  b: undefined,  c: undefined,  d: <reference to FunctionDeclaration "d">  e: undefined};

注意,AO里并不包含函數(shù)“x”。這是因?yàn)椤皒” 是一個(gè)函數(shù)表達(dá)式(FunctionExpression, 縮寫為 FE) 而不是函數(shù)聲明,函數(shù)表達(dá)式不會影響VO。

不管怎樣,函數(shù)“_e” 同樣也是函數(shù)表達(dá)式,但是就像我們下面將看到的那樣,因?yàn)樗峙浣o了變量 “e”,所以它可以通過名稱“e”來訪問。

函數(shù)聲明FunctionDeclaration與函數(shù)表達(dá)式FunctionExpression 的不同,我們會在Functions進(jìn)行詳細(xì)的探討,也可以參考《深入理解JavaScript之揭秘命名函數(shù)表達(dá)式》來了解。

這之后,將進(jìn)入處理上下文代碼的第二個(gè)階段 — 執(zhí)行代碼。

代碼執(zhí)行

這個(gè)周期內(nèi),AO/VO已經(jīng)擁有了屬性(不過,并不是所有的屬性都有值,大部分屬性的值還是系統(tǒng)默認(rèn)的初始值undefined )。

還是前面那個(gè)例子, AO/VO在代碼解釋期間被修改如下:

AO['c'] = 10;AO['e'] = <reference to FunctionExpression "_e">;

再次注意,因?yàn)镕unctionExpression“_e”保存到了已聲明的變量“e”上,所以它仍然存在于內(nèi)存中。

而FunctionExpression “x”卻不存在于AO/VO中,也就是說如果我們想嘗試調(diào)用“x”函數(shù),不管在函數(shù)定義之前還是之后,都會出現(xiàn)一個(gè)錯(cuò)誤“x is not defined”,未保存的函數(shù)表達(dá)式只有在它自己的定義或遞歸中才能被調(diào)用。

另一個(gè)經(jīng)典例子:

alert(x); // function
var x = 10;alert(x); // 10
x = 20;
function x() {};
alert(x); // 20

為什么第一個(gè)alert “x” 的返回值是function,而且它還是在“x” 聲明之前訪問的“x” 的?為什么不是10或20呢?因?yàn)椋鶕?jù)規(guī)范函數(shù)聲明是在當(dāng)進(jìn)入上下文時(shí)填入的;

同意周期,在進(jìn)入上下文的時(shí)候還有一個(gè)變量聲明“x”,那么正如我們在上一個(gè)階段所說,變量聲明在順序上跟在函數(shù)聲明和形式參數(shù)聲明之后,而且在這個(gè)進(jìn)入上下文階段,變量聲明不會干擾VO中已經(jīng)存在的同名函數(shù)聲明或形式參數(shù)聲明,因此,在進(jìn)入上下文時(shí),VO的結(jié)構(gòu)如下:

VO = {};
VO['x'] = <reference to FunctionDeclaration "x">
// 找到var x = 10;// 如果function "x"沒有已經(jīng)聲明的話// 這時(shí)候"x"的值應(yīng)該是undefined// 但是這個(gè)case里變量聲明沒有影響同名的function的值
VO['x'] = <the value is not disturbed, still function>

緊接著,在執(zhí)行代碼階段,VO做如下修改:

VO['x'] = 10;VO['x'] = 20;

我們可以在第二、三個(gè)alert看到這個(gè)效果。

在下面的例子里我們可以再次看到,變量是在進(jìn)入上下文階段放入VO中的。(因?yàn)?,雖然else部分代碼永遠(yuǎn)不會執(zhí)行,但是不管怎樣,變量“b”仍然存在于VO中。)

if (true) {  var a = 1;} else {  var b = 2;}
alert(a); // 1alert(b); // undefined,不是b沒有聲明,而是b的值是undefined

關(guān)于變量

通常,各類文章和JavaScript相關(guān)的書籍都聲稱:“不管是使用var關(guān)鍵字(在全局上下文)還是不使用var關(guān)鍵字(在任何地方),都可以聲明一個(gè)變量”。請記住,這是錯(cuò)誤的概念:

任何時(shí)候,變量只能通過使用var關(guān)鍵字才能聲明。

上面的賦值語句:

a = 10;

這僅僅是給全局對象創(chuàng)建了一個(gè)新屬性(但它不是變量)。“不是變量”并不是說它不能被改變,而是指它不符合ECMAScript規(guī)范中的變量概念,所以它“不是變量”(它之所以能成為全局對象的屬性,完全是因?yàn)閂O(globalContext) === global,大家還記得這個(gè)吧?)。

讓我們通過下面的實(shí)例看看具體的區(qū)別吧:

alert(a); // undefinedalert(b); // "b" 沒有聲明
b = 10;var a = 20;

所有根源仍然是VO和進(jìn)入上下文階段和代碼執(zhí)行階段:

進(jìn)入上下文階段:

VO = {  a: undefined};

我們可以看到,因?yàn)椤癰”不是一個(gè)變量,所以在這個(gè)階段根本就沒有“b”,“b”將只在代碼執(zhí)行階段才會出現(xiàn)(但是在我們這個(gè)例子里,還沒有到那就已經(jīng)出錯(cuò)了)。

讓我們改變一下例子代碼:

alert(a); // undefined, 這個(gè)大家都知道,
b = 10;alert(b); // 10, 代碼執(zhí)行階段創(chuàng)建
var a = 20;alert(a); // 20, 代碼執(zhí)行階段修改

關(guān)于變量,還有一個(gè)重要的知識點(diǎn)。變量相對于簡單屬性來說,變量有一個(gè)特性(attribute):{DontDelete},這個(gè)特性的含義就是不能用delete操作符直接刪除變量屬性。

a = 10;alert(window.a); // 10
alert(delete a); // true
alert(window.a); // undefined
var b = 20;alert(window.b); // 20
alert(delete b); // false
alert(window.b); // still 20

但是這個(gè)規(guī)則在有個(gè)上下文里不起走樣,那就是eval上下文,變量沒有{DontDelete}特性。

eval('var a = 10;');alert(window.a); // 10
alert(delete a); // true
alert(window.a); // undefined

使用一些調(diào)試工具(例如:Firebug)的控制臺測試該實(shí)例時(shí),請注意,F(xiàn)irebug同樣是使用eval來執(zhí)行控制臺里你的代碼。因此,變量屬性同樣沒有{DontDelete}特性,可以被刪除。

特殊實(shí)現(xiàn): parent 屬性

前面已經(jīng)提到過,按標(biāo)準(zhǔn)規(guī)范,活動對象是不可能被直接訪問到的。但是,一些具體實(shí)現(xiàn)并沒有完全遵守這個(gè)規(guī)定,例如SpiderMonkey和Rhino;的實(shí)現(xiàn)中,函數(shù)有一個(gè)特殊的屬性 parent,通過這個(gè)屬性可以直接引用到活動對象(或全局變量對象),在此對象里創(chuàng)建了函數(shù)。

例如 (SpiderMonkey, Rhino):

var global = this;var a = 10;
function foo() {}
alert(foo.__parent__); // global
var VO = foo.__parent__;
alert(VO.a); // 10alert(VO === global); // true

在上面的例子中我們可以看到,函數(shù)foo是在全局上下文中創(chuàng)建的,所以屬性__parent__ 指向全局上下文的變量對象,即全局對象。

然而,在SpiderMonkey中用同樣的方式訪問活動對象是不可能的:在不同版本的SpiderMonkey中,內(nèi)部函數(shù)的__parent__ 有時(shí)指向null ,有時(shí)指向全局對象。

在Rhino中,用同樣的方式訪問活動對象是完全可以的。

例如 (Rhino):

var global = this;var x = 10;
(function foo() {
var y = 20;
// "foo"上下文里的活動對象 var AO = (function () {}).__parent__;
print(AO.y); // 20
// 當(dāng)前活動對象的__parent__ 是已經(jīng)存在的全局對象 // 變量對象的特殊鏈形成了 // 所以我們叫做作用域鏈 print(AO.__parent__ === global); // true
print(AO.__parent__.x); // 10
})();

總結(jié)

在這篇文章里,我們深入學(xué)習(xí)了跟執(zhí)行上下文相關(guān)的對象。我希望這些知識對您來說能有所幫助,能解決一些您曾經(jīng)遇到的問題或困惑。


推薦閱讀
9種日常JavaScript編程中經(jīng)常使用的對象創(chuàng)建模式

本文完~


瀏覽 84
點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評論
圖片
表情
推薦
點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 毛片视频免费观看| 美女黄视频网站| 色777色| 2024天天操| 各种BBwBBwBBwBBw| 成人日皮视频| 奇米色五月| 男女激情网站| 亚洲在线视频网站| 国产精品在线免费观看| 成人AV中文字幕| 69av在线视频| 欧美XXX黑人XYX性爽| 无码人妻系列| 黄网站免费看| 成人国产欧美日韩在线视频| 亚洲AV片一区二区三区| 特黄视频在线观看| 91理论片| 亚州无码免费| 97视频在线观看免费| 高清AV无码| 精品欧美一区二区三区| 亚洲天堂av在线免费观看| 成人免费无码激情AV片| 五月激情丁香婷婷| 天堂俺去俺来也www久久婷婷| 农村少妇久久久久久久| 成人在线精品| 国产成人电影| 国产成人精品a视频| 性欧美一区二区| 国产免费性爱视频| 蝌蚪窝在线视频免费观看| 91在线无码精品在线看| 免费看操片| 欧美亚洲动漫| 国产又爽又黄免费网站在线观看| 天天干天天日天天操| 亚洲成人性爱在线| 亚洲成人在线免费| 色婷婷在线影院| 中文字幕免费高清网站| a视频在线免费观看| 波多野结衣在线无码| 西西444大胆无码视频| 97国产精品久久| 成人在线免费视频观看| 久草视频在线免费看| 91网站免费| 亚洲操逼视频| 一本色道久久综合亚洲怎么玩| 欧美人妻激情| 欧美日综合| 刘玥一区二区| 国产色情性黄片Av网站| 中文字幕第72页| 操b视频在线观看| 中文字幕网站在线观看| 热久久免费| 欧美一区二区三区在线| 国产av日韩av| 成人不卡| 亚洲AV永久无码国产精品久久| 先锋影音资源网站| 色偷偷综合| 中文字幕aV在线| 国产成人99久久亚洲综合精品| 伊人影院在线免费观看| 天天日,天天干,天天操| 日韩黄色毛片| 日韩激情一区二区| 久热精品在线观看| 污视频在线免费| 亚洲大片免费看| 日无码| 国产精品啪啪啪啪| 九九热国产视频| 国产浮力草草| 婷婷精品国产一区二区三区日韩 | 呦呦av| 亚洲乱伦电影| 天天干天天色天天日| 日韩在线成人中文字幕亚洲| 免费AV在线播放| 色婷婷亚洲色| 亚洲.欧美.丝袜.中文.综合| 亚洲aaa| 天堂网2018| 一级A片一毛片大全| 亚洲成人一区二区在线观看| 精品一区二区三区免费| 另类老妇奶性生BBwBB| 亚洲三级片无码| 二区AV| 成人AV十八亚洲二区| 91在线看18| 大荫蒂HD大荫蒂视频| 呦小性Free小U女HD| 国产A级毛片| 成人AV中文字幕| 午夜福利影院在线| 五月丁香婷婷激情| 台湾省成人网站| 日日干日日干| 影音先锋三级资源| 午夜看黄| 亚洲a网| 噼里啪啦免费观看视频大全| 免费婷婷| 大鸡吧操视频| 丁香五月激情中文字幕| 中文无码一区| 永久免费AV无码| 欧美激情一区| 香蕉AV777XXX色综合一区| 久久久久国产一区二区三区四区| 日本精品在线视频| 欧美一区二区三区成人| 苍井空二区| 久久久精品午夜人成欧洲亚洲韩国| 黄色福利网址| 久久穴| 操碰在线观看| 日本一级婬片A片AAA毛多多| 日韩毛片在线播放| www.91在线看| 另类老妇奶性生BBwBB| 日本内射在线观看| 国产一区二区免费在线观看 | 天天澡天天爽日日AV| 91激情网| 国产亚洲精品久久久波多野结衣| 肏少妇女情人大骚逼直播一区二区| 日本少妇无码| 无码人妻一区二区三区免水牛视频 | 欧美黄色网视频| 天天干天天操天天| 日韩免费在线播放| 特一级黄色视频| 国产一级a毛一级a毛片视频黑人| 欧美人妻激情| 欧美成在线视频| 日韩天堂在线播放| 国产AV一区二区三区| 夜夜嗨av| 四虎性爱视频| 亚洲午夜福利视频在线观看| 久久99久久视频| 亚洲在线| 色播综合| 国产欧美一区二区三区四区| 中文字幕一区在线| 东京热视频免费观看| 丁香六月婷婷综合缴| 日本一区二区视频在线观看| 亚州精品国产精品乱码不99勇敢 | 影音先锋国产精品| 成人丁香五月| 婷婷V亚洲V丁香月天V日韩V| 五月丁香综合久久| 五月婷婷丁香六月| 成年人在线观看视频网站| 一区二区三区高清不卡| 久久久久免费视频| 人人澡视频| 午夜美女视频| av在线免费播放| 超碰女人| 午夜专区| 无套内射在线免费观看| h片在线观看免费| 中文成人无字幕乱码精品区| 草久热| 99成人乱码一区二区三区在线| 岛国av在线播放| 大香蕉av一区二区三区在线观看| AV在线免费网站| 先锋AV资源在线| h片免费在线观看| 日韩欧美成人在线视频| 成人国产三级| 天天天天毛片| 少妇搡BBBB搡BBB搡造水爽| 国产又粗又大又爽| 五夜福利成人视频| 色色色五月| 亚洲福利视频网站| 日韩亚洲精品中文字幕| 国产AV日韩AⅤ亚洲AV中文| 国产小黄片| 青娱乐伊人| 日韩视频91| 人人色人人草| 中文字幕日韩无码电影| 天堂网在线视频| 国产美女av| 欧美色逼逼| 色婷婷欧美在线播放内射| 成人黄色在线| 欧美日韩国产成人| 日韩不卡在线观看| 人妻无码久久精品| 亚洲女同在线| 黄色片亚洲| 澳门簧片| 欧美日综合| 日韩欧美在线播放| 大香蕉一级片| 91丨国产丨精品丨丝袜| 亚洲AV无码永久精品| 亚洲免费成人电影| 爱爱日韩| 国产精品久久7777777精品无码 | 夜夜爽天天爽| 999大香蕉| 91三级电影| 久久精品秘一区二区三免费| 淫香淫色天天影视| 成人操b视频| 人人操人人透| 四虎影库男人天堂| 欧美操B在线| 欧美h| 国产欧美一区二区人妻喷水| 久久国产精品视频| 日韩免费视频| 五月婷婷激情| 久久天堂网| 影音先锋国产| 麻豆av在线观看| 亚洲无码高清一区| 蜜桃Av噜噜一区| 天堂网AV在线| 91在线无码精品秘入口男同| 大奶无码| 亚洲色婷婷五月天| 久久成人网豆花视频| 国产乱子伦真实精品!| 伊人五月丁香| 亚洲无码一级视频| 精品成人在线观看| 丁香一区二区| 国产精品啪啪啪啪| 你懂得视频| 男人的天堂视频在线| 欧美成人精品激情在线观看| 国产精品久久久久久久久久二区三区 | 久久精品苍井空免费一区| 亚洲日韩欧美国产| 福利老湿69| 国产午夜福利视频在线观看| 一道本无码视频| 午夜人妻AV| 在线久操| 麻豆成人精品| 中文资源在线a中文| 黄色片网站免费观看| 国产成人精品一区二区三区视频 | 成人毛片18| 色猫咪av| 欧美激情另类| 久操无码| 狠狠操综合| 成人无码一区二区三区| 国产91无码精品秘入口新欢| 三级片视频网站| 精品人妻一区二区三区四区| 国产AV日韩| 伊人网视频在线播放| 玖玖爱这里只有精品| 久久久免费观看视频| 麻豆黄色| 国产成人综合网| 黄色视频网站免费在线观看| 日韩视频在线免费观看| 激情AAA| 免费一级婬片AA片观看| 凸凹翔田千里无码| 国产白丝精品91爽爽久久| 国产无遮挡又黄又爽又色| 想要xx在线观看| 二区在线观看| 亚洲性爱AV| 日韩欧美不卡色不卡| 大香蕉啪啪啪啪| 久久久久久久久久成人| 国产在线毛片| 伊人久久艹| 免费日逼视频| 台湾省成人网站| 日韩性AV| 狠狠色狠狠撸| 久操视频免费在线观看| 无码操逼视频| 日本无码视频在线观看| 快播激情小说| 国产精品久久久久无码AV| 日产精品久久久久| 国产福利电影在线观看| 亚洲乱妇| 久久依人大香蕉| 色狠狠AV| 香蕉视频日韩| 日韩在线视频免费观看| 亚洲视频观看| 色欲影音| 性满足BBWBBWBBW| 成人精品在线观看| 日韩啪啪片| 成人无码免费看| 国产va在线观看| 色欲影视插综合一区二区三区| 国产一级AA片| www.亚洲视频| 丁香五月天视频| 国产精品色呦呦| 综合激情网站| 日本黄色视频免费观看| 日韩五月婷婷| 激情丁香婷婷| 国产精品国产自产拍高清AV| 久久一二三| 免费视频91蜜桃| 国产成人精品无码片区在线观91| h视频免费看| 91人妻人人澡人人爽人人精品乱| 久草网站| 99久久性爱| 人妻黄色视频| 黄色电影免费在线观看| 91青青视频| 国产秘精品一区二区三区免费| 久热官网| 婷婷五月天激情俺来也| 欧美一级性爱在线观看| 久久婷五月天| 日本天堂网| 黄色免费高清视频| 九九九视频在线观看| 亚洲综合影院| 日韩无码专区| 国产婬片一级A片AAA毛片AⅤ| 91亚洲精品国偷拍自产在线观看| 日韩欧美中文| 欧美精品久久久久久久久爆乳| 欧美一级高清片免费一级a| 亚洲欧美影院| www.sese| 亚日韩在线| 好吊妞视频在线| 人人操人人干人人摸| 日日干夜夜撸| 色情片在线播放| 日韩无码免费电影| 国产h在线观看| 亚洲无码影视| 永久免费叼嘿| 婷婷五月丁香色| 大香蕉国产精品| 大鸡巴久久久久| 88AV在线播放| 日韩午夜欧美精品一二三区| 久久成人影音| 丝袜足交视频| 在线观看免费黄色视频| 欧美AAA| 射死你天天日| 日本中文字幕在线观看| 91国啪| 丰满人妻一区二区三区不卡二| 巨い巨乳の少妇あジed2k| 国产熟妇搡BBBB搡BBBB搡| 色噜噜狠狠一区二区三区牛牛影视| 91av在线免费观看| 内射午夜福利在线免费观看视频 | 亚欧洲精品在线视频免费观看 | 丁香五月六月| 韩国av在线| 一区二区免费在线观看| 亚洲色图成人网| 精品无码免费看专区| 四川BBB搡BBB爽爽爽电影| 天美精东蜜桃91| 欧美不卡在线视频| 91久久免费视频| 91在线观看视频| 色撸撸在线视频| 亚洲成人无码电影| 色婷婷俺来也| 国产福利电影在线观看| 亚洲欧美激情小说另类| 亚洲欧美激情小说| www.黄色| 91久久精品无码一区| 国产视频中文字幕| 青青草视频免费观看| 色婷婷AV一区二区三区软件| 国精产品九九国精产品| 国产一级a毛一级a做免费高清视频| av不卡免费观看| 免费看黄在线看| 欧美色图视频网站| 亚洲欧美不卡| 欧美一级视频| 男人资源网| 成人精品无码| 一区二区三区四区五区| 甘肃WBBBB搡wBBBB| 精品www| 婷婷五月天黄色| A级视频网| 婷婷色色婷婷| 一区二区三区小视频| 黄页免费视频| 2025天天操夜夜操| 日韩一级大片| 午夜成人一区二区| 91久久| 欧美偷拍一区二区| 久久久久久久久国产精品| 尤物无码| 日本一级特级毛片视频| 91精品国产综合久久久不打电影| 免费涩涩无遮挡18国产| 97无码精品人妻| 久久久久久久免费无码| 91综合网| 99久久99久久精品免费看小说。 | 在线观看中文字幕一区| 日韩城人免费| 丰满熟妇人妻无码视频| 电影豹妹香港版| AV手机在线| 亚洲一二期视频| 亚洲无码小电影| www.久久精品视频| 亚洲欧美成人在线| 台湾毛片| 色av网| 2014AV天堂网| 亚洲天堂视频网站| 亚洲天堂久久| 五月丁香婷婷激情| 尹人香蕉久久| 日韩中文字幕在线观看视频| 啪啪啪网址| 97国产在线视频| 国产一級A片免费看| 白丝自慰网站| 婷婷五月精品中文字幕| 五月天综合在线| 欧美激情色色| 无码人妻精品一区二区三千菊电影| 中文字幕免费毛片| 亚洲综合无码| 午夜蜜桃人妻一区二区| 国产成人精品一区二区三区四区| 91无码精品| 各种BBwBBwBBwBBw| 老司机福利在线视频| 久久综合热| 亚洲狼人综合网| 成人AV在线电影| 五月天伊人| 免费91| 老太奶性BBwBBw侧所| 久久国产成人| 日本黄色视频网| 日韩无码精品AV| 国产激情网站| 婷婷综合素质二区| 免费观看日韩无码视频| 超碰在线观看97| 国产又爽又黄免费网站在线| 狠狠操婷婷| 日韩肏屄网| 午夜香蕉视频| 欧美日P| 欧美一级A片在免费看| 亚洲欧洲无码在线| 久热官网| 日本国产欧美| 国产精品HongKong麻豆| 污网站免费在线观看| 国产黄a| 欧美黄片无码| 超碰自拍| 欧美亚洲日韩国产| 91人妻人人爽人人澡| 日韩色妇| 中文字幕浅井香舞被黑人俘虏 | 亚洲视频一区二区| 国产一区二区三区四区五区在线| 成人黃色A片免费看| 欧美久久一区二区三区四区视频| 欧美一卡二卡三卡| 黑人人妻黑人ThePorn| 国产成人无码Av片在线公司| 中文字幕无码乱伦| 搡BBB搡BBBB搡BBBB| 成年人黄色网址| 人人爱天天做| 91中文字幕网| www.久久网| 阿宾MD0165麻豆沈娜娜| 国产有码视频| 欧美丰满美乳XXⅩ高潮www| 永久免费无码中文字幕| 人与禽一级A片一区二区三区| 久久亚洲影视| 巨い巨乳の少妇あジed2k| 久久免费视频观看| 六月婷婷中文字幕| 久久国产亚洲| 成人做爱黄片| 欧美操B在线| 中文字幕成人电影| 欧美人妻视频| 麻豆午夜成人无码电影| 上海熟妇搡BBBB搡BBBB| 超碰人人操97| 啊v视频在线| 大肉大捧一进一出免费阅读 | 国产色婷婷| 日本精品一区二区三区四区的功能 | 亚洲最大福利视频| 91三级在线观看| 国产成人大香蕉| 午夜福利100理论片| 成人在线无码视频| PORNY九色视频9l自拍| 91精品国产人妻| 99AV| 国产精品AV网站| 亚洲永久在线| 超碰小说| 伊人网站| 91三级片| 色我影院| 欧美日韩中文| 五月婷婷色色| 午夜在线观看视频18| 免费无码毛片| 国产又爽又黄免费网站在线看| 永久免费黄色视频| 久久永久免费视频| 久久精品999| 日本一本在线| av影片在线播放| 国产系列精品AV| 999在线视频| 又爽又黄免费网站97双女| 丁香六月操| 亚洲一区二区三区在线++中国| 欧美日本黄色| 肏屄视频免费观看| 亚洲AV无码成人精品国产五月天| 老妇槡BBBB槡BBBB槡| 日本三级片网址| 成人H在线| 五月丁香婷婷在线观看| 自拍一区在线观看| 大香伊人蕉| 熊猫视频91| 青娱乐亚洲| 伊人网在线观看| 国产成人一区二区| 黄色视频网站在线| 精品国产乱子伦一区二区三区最新章 | 亚洲中文字幕视频在线| www污| 91看片看婬黄大片女跟女| 2025最新国产成人精品| 日逼黄色视频| 五月丁香综合在线| 亚洲视频在线观看网站| 色呦呦视频| 无码秘蜜桃一区二区三区| 一本色道久久综合无码人妻四虎| 国产探花一区二区三区| 国产A片电影| 国产精品成人免费视频| 亚洲性天堂| 亚洲综合影院| 亚洲成人网在线观看| 亚洲第一免费视频| 中文字幕一区二区久久人妻| 日本免费黄色电影| 欧美日韩小视频| 无码精品ThePorn| 尤物在线播放| 亚洲情免| 亚洲欧美高清视频| 亚洲AV无码成人精品区www| 久9久9久9久9久9久9| 成人精品一区二区无码| 九九九九综合| 在线观看免费视频黄| 中文字幕一区二区三区日本在线 | 国产精品V日韩精品V在线观看| 超碰人人妻| 国产黄色视屏| AV网站免费看| 伊人久久大| 日韩A片在线观看| 精品第一页| 欧美夜夜草视频| 天天天天色| 欧美亚洲日韩一区| 色播av| 91精品人妻少妇无码影院| 神马影院午夜福利| 日本黄网站| 日韩99| 麻豆艾秋MD0056在线| 99re视频在线播放| 色欲欲www成人网站| 日本天天操| 日韩午夜剧场| 欧一美一婬一伦一区| 北条麻妃在线观看香蕉| 欧美老妇大BBBBXXXX| 成人免费啪啪视频| 北京熟妇搡BBBB搡BBBB| 福利视频二区| 黄网站免费看| 亚洲AV自拍| 日逼| 国产高清无码18| 无码人妻丰满熟妇| 黄色视频免费在线观看| WWW黄片| 人妻夜夜爽天天爽| 成人精品三级麻豆| 国产午夜在线| 一本在线| 最新av资源| 先锋影音AV资源站| 国产精品久久久久无码| wwwxxx18| 久久福利导航| 精品视频中文字幕| 欧美天天撸| 久久九热| 在线大香蕉| 国产一区免费视频| 在线观看视频国产| 蜜芽AV在线| 色色婷婷五月天| 成人一区二区电影| 99久热在线精品视频| 天堂在线无码| 日日夜夜精品| 91成人一区二区| 欧美日韩大片| 一级无码高清| 免费无码成人片在线观看在线| 91在线无码精品国产三年| 国产操逼网址| 久久久久久婷婷| 国产成人无码一区二区在线| AV1区二区| 日本一区二区视频在线| 国产精品一区在线| 丰满人妻一区二区免费看| 色五月欧美| 无码一区二| 亚洲综合日韩在线| 91丨PORNY丨在线中文| 國產精品777777777| 91久久| 日逼视频免费观看| 国产一区二区三区四区五区六区七区 | 精品国产久久久久久| 精品一级| 欧洲三级片网站| 免费在线观看无码| 三级麻豆| 秋霞一区二区三区无码| 在线免费看A| 免费观看黄色小视频| 18禁在线播放| 日本黄色片在线播放| 特级西西人体444.444人体聚色| 高清无码色播| 亚洲天堂国产| 最近中文字幕mv第三季歌词| 2015中文字幕黄色视频| jt33免费观看高清| 日韩在线视频网站| 精品视频久久久久久| 日日操夜夜爽| 欧美视频一区二区| 久一在线| 丰满人妻一区二区三区蜜桃视频| 国产精品一麻了麻了| 日韩性爱av| 中文字幕人成人乱码亚洲电影| 夏目あきら被续侵犯7天| 91狠狠色丁香婷婷综合久久精品 | 精品国产久久久久久| 青青国产视频| 一级无码免费| 五月丁香伊人| 7777精品伊人久久7777| 欧美高清视频| 免费中文字幕视频| 国产午夜精品一区二区| 日韩一级片在线观看| 日本黄色免费在线观看| 欧美成人a片| 中文字幕五月天| 人人妻人人爽人人精品| 色老板av| 无码四区| 国产成人在线精品| 青草视频在线免费观看| 蕉久中文字慕| 国产麻豆精品成人免费视频| 影音先锋aV成人无码电影| 美女网站永久免费观看| 肏屄视频免费观看| 青娱亚洲| 97视频在线观看免费| 国产精品毛片一区视频播| 丁香欧美| 国产AV日韩AⅤ亚洲AV中文| 影音先锋久久久| 日韩小视频| 农村三级片| 国产中文字幕在线观看| 无码人妻熟妇| 尤物在线视频| 日韩特一级| 久久久久人妻| 视频在线一区| 黄片毛片| 成人三级视频在线观看| 91国啪| 国产区精品| 婷婷五月天免费视频| 北条麻妃网址| 欧美操逼小视频| 国产jk在线观看| 午夜福利在线播放| 成人视频网站在线观看| 麻豆做爱| 天天干夜夜操熟女| 国产无码免费在线观看| 成人性生交片无码免费看人| 国产精品一卡二卡| 成人天堂一区二区三区| 免费看操逼视频| 人人看人人摸人人草| 一本色道88久久加勒比精品 | 日韩成人AV电影| 国产精品无码怀孕软件| 91嫩操| 亚洲中文字幕在线观看视频网站 | 操逼视频国产| 欧美精产国品一二三产品价格 | 天天综合91| 国产黄色视频网站在线观看| 精品国产免费观看久久久_久久天天| 国产日韩在线观看视频| 东北老女人性爱视频| 久久精品人妻| AV无码免费一区二区三区不卡| 久热婷婷| 国产性爱av| 国产午夜视频在线| 五月天亚洲无码| 不卡AV在线| 乱伦内射视频| 撸撸操在线视频观看只有精品| 91蝌蚪视频在线观看| 日韩无码福利| 美日韩视频欧美一区二区视频| 日韩成人三级| 国产无码一二三区| 亚洲免费无码| 亚洲性视频| 欧美精产国品一二三产品价格 | 日韩操操| 日韩欧美一级二级| 熟女少妇网站| 成人一级电影| AV网站免费在线观看| 国产精品一级无码免费播放| 东北毛片| 大地99中文在线观看| 亚洲黄色小电影| 久久欧洲成人精品无码区| 小黄片在线| 99精品视频16在线免费观看| 国产成人tv| 操逼综合| 丁香色五月婷婷| 免费色色视频| 阿拉伯三级片| 精品视频在线免费观看| 丁香色五月婷婷| 国产在线1| 国产视频一区二区在线| 久久精品国产视频| 欧美视频a| 男人天堂资源网| 激情淫荡少妇| 17c.白丝喷水自慰| 亚洲免费观看高清完整版| 亚洲AV无码黑人专区| 国产高清自拍| 无码人妻精品一区二区三| 免费日韩毛片| 中文人妻无码| 五月天丁香成人| 日韩不卡在线| 色色国产| 不卡a12| 久久久WWW成人免费无遮挡大片 | 天堂网中文在线| 免费A片视频| 中文字幕av久久爽Av| 熟女人妻在线| 国产精品v欧美精品v日韩精品| 日韩三级AV在线观看| 蜜桃传媒一区二区亚洲AV| 精品人妻无码一区二区三区四川人 | av中文在线观看| 另类老太婆性BBWBBw| 日韩精品成人av| 五月天视频网| 一级黄色视频日逼片| 成人精品在线| 91久久国产性奴调教| 久久狼友| 一级黄色免费视频| 亚洲AV无码高清| 国产嫩草久久久一二三久久免费观看 | 中文亚洲视频| 色婷婷视屏| 男女拍拍| 久久嫩草精品久久久久| 中文字幕福利视频| 人人操国产| 经典三级在线视频| 欧美日韩一区二区三区四区五区六区 | 蜜桃视频成人app| 国产AV小电影| 亚洲男人的天堂AV| 国产精品国产精品国产专区不52| 亚洲日韩精品欧美一区二区yw| 中字无码av| 中文爱爱视频| 国产无码一区二区三区| 免费a网站| 超碰在线人人操| 男男做受A片AAAA| 大香蕉国产精品视频| 99精品免费在线观看| 欧美性交网| 黄片高清无码在线观看| Www.黄色| 伊人大香蕉在线网| AA免费视频| 日韩欧美中文在线观看| 妓女不卡| 久久久久9999| 天天干天天干天天干| 国产无码自拍| 熟妇导航| 日韩激情在线| 波多野结衣在线无码| 九九精品久久| 丰满少妇一区二区三区| 国产亚洲一区二区三区| 午夜成人无码| 成人精品水蜜桃| www.热久久| 亚州操逼片| 久久国产高清| 亚洲视频高清无码| 久久一| 波多野结衣亚洲视频| 日韩人妻精品中文字幕专区不卡| 中文字幕乱码无码人妻系列蜜桃| 国产成人无码一区二区在线播放 | 中文字幕无码乱伦| 熟女人妻一区二区三区免费看| 国产高清黑人| 日日碰狠狠躁久久躁婷婷| 亚洲狼人久久久精品| 亚洲av大片| 超碰97成人| 日韩欧美大片在线观看| 欧一美一婬一伦一区?| 三级日韩视频| 在线观看AV资源| 精品无码9|