中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

javascript計(jì)時器編寫過程與實(shí)現(xiàn)方法
來源:易賢網(wǎng) 閱讀:1122 次 日期:2016-08-04 16:41:32
溫馨提示:易賢網(wǎng)小編為您整理了“javascript計(jì)時器編寫過程與實(shí)現(xiàn)方法”,方便廣大網(wǎng)友查閱!

Object是在javascript中一個被我們經(jīng)常使用的類型,而且JS中的所有對象都是繼承自O(shè)bject對象的。雖說我們平時只是簡單地使用了Object對象來存儲數(shù)據(jù),并沒有使用到太多其他功能,但是Object對象其實(shí)包含了很多很有用的屬性和方法,尤其是ES5增加的方法,因此,本文將從最基本的介紹開始,詳細(xì)說明了Object的常用方法和應(yīng)用。

基礎(chǔ)介紹

創(chuàng)建對象

首先我們都知道,對象就是一組相似數(shù)據(jù)和功能的集合,我們就是用它來模擬我們現(xiàn)實(shí)世界中的對象的。那在Javascript中,創(chuàng)建對象的方式通常有兩種方式:構(gòu)造函數(shù)和對象字面量。

new構(gòu)造函數(shù)法

var person = new Object();

person.name = "狼狼的藍(lán)胖子";

person.age = 25;

這種方式使用new關(guān)鍵字,接著跟上Object構(gòu)造函數(shù),再來給對象實(shí)例動態(tài)添加上不同的屬性。這種方式相對來說比較繁瑣,一般推薦使用對象字面量來創(chuàng)建對象。

對象字面量

對象字面量很好理解,使用key/value的形式直接創(chuàng)建對象,簡潔方便。

var person = {

  name: “狼狼的藍(lán)胖子”,

  age: 25

};

這種方式直接通過花括號將對象的屬性包起來,使用key/value的方式創(chuàng)建對象屬性,每個屬性之間用逗號隔開。

注意:如果是最后一個屬性,后面就不要加逗號,因?yàn)樵谝恍┡f的瀏覽器下會報(bào)錯。

對象實(shí)例的屬性和方法

不管通過哪種方式創(chuàng)建了對象實(shí)例后,該實(shí)例都會擁有下面的屬性和方法,下面將會一一說明。

constructor屬性

constructor屬性是保存當(dāng)前對象的構(gòu)造函數(shù),前面的例子中,constructor保存的就是Object方法。

var obj1 = new Object();

obj1.id = "obj1";

var obj2 = {

  "id": "obj2"

};

console.log(obj1.constructor);//function Object(){}

console.log(obj2.constructor);//function Object(){}

hasOwnProperty(propertyName)方法

hasOwnProperty方法接收一個字符串參數(shù),該參數(shù)表示屬性名稱,用來判斷該屬性是否在當(dāng)前對象實(shí)例中,而不是在對象的原型鏈中。我們來看看下面這個例子:

var arr = [];    

console.log(arr.hasOwnProperty("length"));//true

console.log(arr.hasOwnProperty("hasOwnProperty"));//false

在這個例子中,首先通過定義了一個數(shù)組對象的實(shí)例arr,我們知道數(shù)組對象實(shí)際是通過原型鏈繼承了Object對象,然后擁有自己的一些屬性,我們通過hasOwnProperty方法判斷l(xiāng)ength是arr自己的屬性,而hasOwnProperty是在原型鏈上的屬性。

hasOwnProperty方法可以和for..in結(jié)合起來獲取對象自己的key。

isPrototypeOf(Object)方法

isPrototype方法接收一個對象,用來判斷當(dāng)前對象是否在傳入的參數(shù)對象的原型鏈上,說起來有點(diǎn)抽象,我們來看看代碼。

function MyObject() {}

var obj = new MyObject();

console.log(Object.prototype.isPrototypeOf(obj));

我們知道MyObject是繼承自O(shè)bject對象的,而在JS中,繼承是通過prototype來實(shí)現(xiàn)的,所以O(shè)bject的prototype必定在MyObject對象實(shí)例的原型鏈上。

propertyIsEnumerable(prototypeName)方法

prototypeIsEnumerable用來判斷給定的屬性是否可以被for..in語句給枚舉出來。看下面代碼:

var obj = {

name: "objName"

for (var i in obj) {

console.log(i);

}

執(zhí)行這段代碼輸出字符串“name”,這就說明通過for…in語句可以得到obj的name這個屬性,但是我們知道,obj的屬性還有很多,比如constructor,比如hasOwnPrototype等等,但是它們沒有被輸出,說明這些屬性不能被for…in給枚舉出來,可以通過propertyIsEnumerable方法來得到。

代碼如下:

console.log(obj.propertyIsEnumerable("constructor"));//false

判斷“constructor”是否可以被枚舉,輸出false說明無法被枚舉出來。

toLocaleString()方法

toLocalString方法返回對象的字符串表示,和代碼的執(zhí)行環(huán)境有關(guān)。

var obj = {};

console.log(obj.toLocaleString());//[object Object] 

var date = new Date();

console.log(date.toLocaleString());//2016/2/28 下午1:39:27

toString()方法

toString用來返回對象的字符串表示。

var obj = {};

console.log(obj.toString());//[object Object]

var date = new Date();

console.log(date.toString());//Sun Feb 28 2016 13:40:36 GMT+0800 (中國標(biāo)準(zhǔn)時間)

valueOf()方法

valueOf方法返回對象的原始值,可能是字符串、數(shù)值或bool值等,看具體的對象。

var obj = {

  name: "obj"

};

console.log(obj.valueOf());//Object {name: "obj"}

var arr = [1];

console.log(arr.valueOf());//[1]

var date = new Date();

console.log(date.valueOf());//1456638436303

如代碼所示,三個不同的對象實(shí)例調(diào)用valueOf返回不同的數(shù)據(jù)。

屬性的類型

在Javascript中,屬性有兩種類型,分別是數(shù)據(jù)屬性和訪問器屬性,我們來看看這兩種屬性具體是什么東西。

數(shù)據(jù)屬性

數(shù)據(jù)屬性我們可以理解為我們平時定義對象時賦予的屬性,它可以進(jìn)行讀和寫。但是,ES5中定義了一些特性,這些特性是用來描述屬性的各種特征,特性是內(nèi)部值,不能直接訪問到。特性通過用兩對方括號表示,比如[[Enumerable]]。屬性的特性會有一些默認(rèn)值,要修改特性的默認(rèn)值,必須使用ES5定義的新方法Object.defineProperty方法來修改。

數(shù)據(jù)屬性有4個描述其特征的特性,下面將依次說明每一個特性:

(1)[[Configurable]]:該特性表示是否可以通過delete操作符來刪除屬性,默認(rèn)值是true。

var obj = {};

obj.name = "myname";

delete obj.name;

console.log(obj.name);//undefined

這段代碼很明顯,通過delete刪除了obj的name屬性后,我們再訪問name屬性就訪問不到了。

我們通過Object.defineProperty方法來修改[[Configurable]]特性。

var obj = {};

obj.name = "myname";

Object.defineProperty(obj, "name", {

  configurable: false

})        

delete obj.name;

console.log(obj.name);//myname

通過將configurable特性設(shè)置成false之后,delete就無法刪除name屬性了,如果在嚴(yán)格模式下,使用delete去刪除就會報(bào)錯。

(2)[[Enumerable]]:表示是否能夠通過for…in語句來枚舉出屬性,默認(rèn)是true

我們來看看前面的例子:

var obj = {

  name: "objName"

for (var i in obj) {

  console.log(i);//name

}

這段代碼只輸出了name屬性,我們來將constructor屬性的[[Enumerable]]設(shè)置為true試試。

var obj = {

    name: "objName"

}

Object.defineProperty(obj, "constructor", {

  enumerable: true

})

for (var i in obj) {

  console.log(i);//name,constructor

}

console.log(obj.propertyIsEnumerable("constructor"));//true

這段代碼中,for…in循環(huán)得到了name和constructor兩個屬性,而通過propertyIsEnumerable方法來判斷constructor也返回了true。

(3)[[Writable]]:表示屬性值是否可以修改,默認(rèn)為true

如果[[Writable]]被設(shè)置成false,嘗試修改時將沒有效果,在嚴(yán)格模式下會報(bào)錯

(4)[[Value]]:表示屬性的值,默認(rèn)為undefined

我們通過一個簡單的例子來看看這兩個特性:

var obj = {

  name: "name"

};

console.log(obj.name);//name    

Object.defineProperty(obj, "name", {

  value: "newValue",

  writable: false

})

console.log(obj.name);//newValue

obj.name = "oldValue";

console.log(obj.name);//newValue

我們首先定義了obj對象的name屬性值為“name”,然后通過defineProperty方法來修改值,并且將其設(shè)置為不可修改的。接著我們再修改name屬性的值,可以發(fā)現(xiàn)修改無效。

如果我們通過defineProperty來修改name屬性的值,是否可以修改呢?答案是可以的:

Object.defineProperty(obj, "name", {

  value: "oldValue"

})

console.log(obj.name); //oldValue

訪問器屬性

訪問器屬性有點(diǎn)類似于C#中的屬性,和數(shù)據(jù)屬性的區(qū)別在于,它沒有數(shù)據(jù)屬性的[[Writable]]和[[Value]]兩個特性,而是擁有一對getter和setter函數(shù)。

[[Get]]:讀取屬性時調(diào)用的函數(shù),默認(rèn)是undefined

[[Set]]:設(shè)置屬性時調(diào)用的函數(shù),默認(rèn)是undefined

getter和setter是一個很有用的東西,假設(shè)有兩個屬性,其中第二個屬性值會隨著第一個屬性值的變化而變化。這種場景在我們平時的編碼中起始是非常常見的。在之前的做法中,我們往往要去手動修改第二個屬性的值,那現(xiàn)在我們就可以通過get和set函數(shù)來解決這個問題。看下面這個例子:

var person = {

  age: 10

}

Object.defineProperty(person, "type", {

  get: function () {

    if (person.age > 17) {

      return "成人";

    }

    return "小孩";

  }

})

console.log(person.type);//小孩

person.age = 18;

console.log(person.type);//成人

通過修改age的值,type的值也會相應(yīng)的修改,這樣我們就不用再手動的去修改type的值了。

下面這種方式也是可以實(shí)現(xiàn)同樣的效果:

var person = {

  _age: 10,

  type: "小孩"

Object.defineProperty(person, "age", {

  get: function () {

    return this._age;

  },

  set: function (newValue) {

    this._age = newValue;

    this.type = newValue > 17 ? "成人" : "小孩";

  }

})

console.log(person.type);

person.age = 18;

console.log(person.type);

關(guān)于訪問器屬性,有幾點(diǎn)要注意:

1、嚴(yán)格模式下,必須同時設(shè)置get和set

2、非嚴(yán)格模式下,可以只設(shè)置其中一個,如果只設(shè)置get,則屬性是只讀的,如果只設(shè)置set,屬性則無法讀取

3、Object.defineProperty是ES5中的新方法,IE9(IE8部分實(shí)現(xiàn),只有dom對象才支持)以下瀏覽器不支持,一些舊的瀏覽器可以通過非標(biāo)準(zhǔn)方法defineGetter()和defineSetter()來設(shè)置,這里就不說明了,有興趣的同學(xué)可以查找相關(guān)資料。

特性操作的相關(guān)方法

ES5提供了一些讀取或操作屬性特性的方法,前面用到的Object.defineProperty就是其中之一。我總結(jié)了一些比較常用的方法如下:

(1)Object.defineProperty

定義一個對象的屬性,這個方法前面我們已經(jīng)用到多次,簡單說說其用法。

代碼如下:

Object.defineProperty(obj,propName,descriptor);

defineProperty有點(diǎn)類似于定于在Object上的靜態(tài)方法,通過Object直接調(diào)用,它接收3個參數(shù):

obj:需要定義屬性的對象

propNane:需要被定義的屬性名稱

defineProperty:屬性描述符,包含一些屬性的特性定義

例子如下:

var obj = {};

Object.defineProperty(obj, "name", {

  value: "name",

  configurable: true,

  writable: true,

  enumerable: true

});

(2)Object.defineProperties

和defineProperty類似,是用來定義對象屬性的,不同的是它可以用來同時定義多個屬性,我們通過命名也可以看出來,用法如下:

var obj = {};

Object.defineProperty(obj, {

  "name": {

    value: "name",

    configurable: true,

    writable: true,

    enumerable: true

  },

  "age": {

    value: 20 

  }

});

(3)Object.getOwnPropertyDescriptor

ES5中還提供了一個讀取特性值的方法,該方法接收對象及其屬性名作為兩個參數(shù),返回一個對象,根據(jù)屬性類型的不同,返回對象會包含不同的值。

var person = {

  _age: 10,

  type: "小孩"

}

Object.defineProperty(person, "age", {

  get: function () {

    return this._age;

  },

  set: function (newValue) {

    this._age = newValue;

    this.type = newValue > 17 ? "成人" : "小孩";

  }

})

console.log(Object.getOwnPropertyDescriptor(person, "type"));//Object {value: "成人", writable: true, enumerable: true, configurable: true}

console.log(Object.getOwnPropertyDescriptor(person, "age")); //Object {enumerable: false, configurable: false, get: function(),set: function ()}

Object的方法

在ES5中,Object對象上新增了一批方法,這些方法可以直接通過Object進(jìn)行訪問,前面用到的defineProperty就是新增的方法之一。除此之外還有很多方法,我將其總結(jié)歸納如下:

對象創(chuàng)建型方法

Object.create(proto, [propertiesObject])

在前面我們提到,創(chuàng)建一個對象有兩種方法:構(gòu)造函數(shù)和對象字面量。

這兩種方法有一個缺點(diǎn)就是:如果要創(chuàng)建多個對象,寫起來很繁瑣,所以后來就有了一種創(chuàng)建自定義構(gòu)造函數(shù)的方法來創(chuàng)建對象,如下所示:

function Person(name, age) {

  this.name = name;

  this.age = age;

}

var person = new Person("Jack", 15);

這種方式可以很方便的創(chuàng)建多個同樣的對象,也是目前比較常用的方法。

ES5提供的Object.create方法也是一個創(chuàng)建對象的方法,這個方法允許為創(chuàng)建的對象選擇原型對象,不需要定義一個構(gòu)造函數(shù)。用法如下:

var obj = Object.create(Object.prototype, { 

  name: {

    value: "Jack"

  }

})

console.log(obj.name);//Jack

這個方法接收的第一個參數(shù)作為被創(chuàng)建對象的原型,第二個參數(shù)是對象的屬性。注意:在這個例子中,name屬性是無法被修改的,因?yàn)樗鼪]有設(shè)置writable特性,默認(rèn)則為false。

個人看法:Object.create這種創(chuàng)建對象的方式略顯繁瑣,除非是需要修改屬性的特性,否則不建議使用這種方式創(chuàng)建對象。

屬性獲取型方法

Object.keys

Object.keys是用來獲取給定對象的所有可枚舉的自身屬性的屬性名,它返回一個數(shù)組。

function Parent() {

  this.lastName = "Black"

}

function Child(firstName) {

  this.firstName = firstName;

}

Child.prototype = new Parent();

var son = new Child("Jack");

console.log(Object.keys(son));//["firstName"]

代碼中返回了firstName,并沒有返回從prototype繼承而來的lastName和不可枚舉的相關(guān)屬性。

在一些舊的瀏覽器中,我們可以使用hasOwnProperty和for…in來達(dá)到類似的效果。

Object.keys = Object.keys ||

  function (obj) {

    var keys = [];

    for (var key in obj) {

      if (obj.hasOwnProperty(key)) {

        keys.push(key);

      }

    }

    return keys;

  }

Object.getOwnPropertyNames()

getOwnPropertyNames用來獲取對象自身的所有屬性,包括可枚舉和不可枚舉的所有屬性,如下所示:

function Parent() {

  this.lastName = "Black"

}

function Child(firstName) {

  this.firstName = firstName;

}

Child.prototype = new Parent();

var son = new Child("Jack");

Object.defineProperty(son, "age", {

  enumerable: false

})

console.log(Object.keys(son));//["firstName"] 

console.log(Object.getOwnPropertyNames(son));//["firstName", "age"]

我們定義給son對象定義了一個不可枚舉的屬性age,然后通過keys和getOwnPropertyNames兩個方法來獲取屬性列表,能明顯看出了兩者區(qū)別。

屬性特性型方法

這個主要是前面提到的三個方法:defineProperty,defineProperties和getOwnPropertyDescriptor三個方法

對象限制型方法

ES5中提供了一系列限制對象被修改的方法,用來防止被某些對象被無意間修改導(dǎo)致的錯誤。每種限制類型包含一個判斷方法和一個設(shè)置方法。

阻止對象擴(kuò)展

Object.preventExtensions()用來限制對象的擴(kuò)展,設(shè)置之后,對象將無法添加新屬性,用法如下:

代碼如下:

Object.preventExtensions(obj);

該方法接收一個要被設(shè)置成無法擴(kuò)展的對象作為參數(shù),需要注意兩點(diǎn):

1、對象的屬性不可用擴(kuò)展,但是已存在的屬性可以被刪除

2、無法添加新屬性指的是無法在自身上添加屬性,如果是在對象的原型上,還是可以添加屬性的。

function Person(name) {

  this.name = name;

}

var person = new Person("Jack");

Object.preventExtensions(person);

delete person.name;

console.log(person.name);//undefined

Person.prototype.age = 15;

console.log(person.age);//15

Object.isExtensible方法用來判斷一個對象是否可擴(kuò)展,默認(rèn)情況是true

將對象密封

Object.seal可以密封一個對象并返回被密封的對象。

密封對象無法添加或刪除已有屬性,也無法修改屬性的enumerable,writable,configurable,但是可以修改屬性值。

function Person(name) {

  this.name = name;

}

var person = new Person("Jack");

Object.seal(person);

delete person.name;

console.log(person.name);//Jack

將對象密封后,使用delete刪除對象屬性,還是可以訪問得到屬性。

通過Object.isSealed可以用來判斷一個對象是否被密封了。

凍結(jié)對象

Object.freeze方法用來凍結(jié)一個對象,被凍結(jié)的對象將無法添加,修改,刪除屬性值,也無法修改屬性的特性值,即這個對象無法被修改。

function Person(name) {

  this.name = name;

}

var person = new Person("Jack");

Object.freeze(person);

delete person.name;

console.log(person.name);//Jack

Person.prototype.age = 15;

console.log(person.age);//15

分析上面的代碼我們可以發(fā)現(xiàn),被凍結(jié)的對象無法刪除自身的屬性,但是通過其原型對象還是可以新增屬性的。

通過Object.isFrozen可以用來判斷一個對象是否被凍結(jié)了。

可以發(fā)現(xiàn):這三個限制對象的方法的限制程度是依次上升的。

總結(jié)

Object雖說是一個我們平時開發(fā)中最經(jīng)常用到的對象,但是它的很多功能還沒有被我們挖掘出來。本文首先介紹了Object的基本使用,接著介紹了一些比較少使用到的屬性特性,最后分析了一些比較常用的方法,尤其是ES5中提供的新方法。

更多信息請查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:javascript計(jì)時器編寫過程與實(shí)現(xiàn)方法
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2026上岸·考公考編培訓(xùn)報(bào)班

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
国模叶桐国产精品一区| 国产精品综合久久久| 国产在线播放一区二区三区| 欧美日韩一区二区三| 国产精品一区二区三区久久久| 亚洲视频每日更新| 国产精品剧情在线亚洲| 亚洲国产精品va在线看黑人| 欧美有码视频| 激情懂色av一区av二区av| 免费看亚洲片| 欧美日韩精品免费观看视一区二区| 亚洲高清在线观看一区| 欧美在线3区| 久久性天堂网| 国产精品久久久久毛片软件| 尤物九九久久国产精品的特点| 在线观看国产欧美| 亚洲毛片在线看| 亚洲卡通欧美制服中文| 欧美日韩国产高清| 国产一区二区三区最好精华液 | 久久成人综合网| 欧美视频专区一二在线观看| 国产精品男女猛烈高潮激情| 亚洲一区二区三区高清| 国产欧美91| 欧美—级高清免费播放| 噜噜噜在线观看免费视频日韩| 亚洲精品综合精品自拍| 在线日韩中文字幕| 亚洲大片精品永久免费| 国内外成人免费视频| 在线天堂一区av电影| 久久久久国产精品厨房| 欧美午夜精品伦理| 亚洲午夜精品在线| 亚洲国产一区二区三区青草影视| 亚洲欧美久久久久一区二区三区| 欧美色综合天天久久综合精品| 99精品视频免费全部在线| 蜜桃av综合| 黄色成人av网站| 久久久久久精| 一区精品久久| 亚洲视频在线看| 国产精品久久国产精品99gif | 欧美日韩伦理在线| 一本色道久久综合一区| 国产精品国产三级国产普通话三级| 亚洲一级一区| 国产手机视频一区二区| 久久精品论坛| 蜜月aⅴ免费一区二区三区| 老**午夜毛片一区二区三区| 国语自产在线不卡| 伊人成年综合电影网| 亚洲激情午夜| 亚洲一区亚洲| 久久米奇亚洲| 欧美三级欧美一级| 伊人久久婷婷| 亚洲影院污污.| 久久久久久久久久久久久女国产乱| 国产精品嫩草影院av蜜臀| 欧美日韩国产在线看| 在线一区二区三区四区| 国产精品永久免费视频| 久久精品亚洲精品国产欧美kt∨| 亚洲国产成人91精品| 久久成人一区二区| 在线看日韩欧美| 欧美日韩少妇| 午夜一区二区三视频在线观看| 狠狠色狠狠色综合日日小说| 欧美激情第三页| 午夜一区不卡| 亚洲激情女人| 国产精品日韩专区| 久久在线播放| 亚洲精品影院| 国产精品午夜电影| 免费久久精品视频| 亚洲永久精品大片| 亚洲第一黄色网| 国产精品久久久久久久久果冻传媒| 欧美在线一区二区三区| 亚洲精品乱码久久久久久| 国产精品自在线| 久久精品亚洲一区| 中文精品一区二区三区 | 亚洲国产美女久久久久| 欧美日韩国产专区| 久久久久久久性| 亚洲视频狠狠| 伊人影院久久| 国产精品一区二区久久国产| 久久精品国产91精品亚洲| 99国产一区二区三精品乱码| 狠狠色噜噜狠狠狠狠色吗综合| 欧美午夜电影网| 牛牛国产精品| 久久精品视频在线播放| 欧美三区在线| 巨乳诱惑日韩免费av| 欧美在线网址| 黄色成人在线网站| 在线电影欧美日韩一区二区私密| 久久综合久久综合久久综合| 亚洲第一网站| 国产一区二区三区自拍| 久久精品女人| 国产精品久久久久久久久久妞妞 | 久久综合999| 亚洲午夜一区二区| 亚洲人精品午夜| 悠悠资源网亚洲青| 国产亚洲精品v| 国产精品嫩草影院av蜜臀| 欧美精品电影在线| 女生裸体视频一区二区三区| 久久久久国产成人精品亚洲午夜| 一区二区高清在线| 一区二区亚洲| 伊人精品久久久久7777| 国产精品黄视频| 国产精品高清在线| 欧美午夜激情在线| 欧美片第一页| 欧美日韩亚洲一区二区三区四区| 欧美激情一区在线观看| 亚洲大片av| 在线播放国产一区中文字幕剧情欧美 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产一区二区三区黄视频| 国产亚洲网站| 国产精品美女在线| 欧美视频一区二区| 国产精品家庭影院| 国产精品久久久久久久午夜| 欧美日本韩国一区二区三区| 欧美日韩在线电影| 国产精品久久久爽爽爽麻豆色哟哟 | 欧美一区二区三区四区在线观看地址| 奶水喷射视频一区| 久久久久久久久久久久久女国产乱 | 欧美大片在线看| 久久精品国产清自在天天线| 欧美亚洲一区二区在线观看| 久久久精品一区| 欧美在线短视频| 欧美伊人久久大香线蕉综合69| 久久久成人网| 欧美一级专区| 久久久久久九九九九| 午夜欧美大尺度福利影院在线看| 亚洲午夜精品久久久久久app| 亚洲一区精品电影| 久久综合九色综合久99| 欧美岛国激情| 国产精品亚发布| 国产一区二区福利| 亚洲精品综合精品自拍| 这里只有视频精品| 久久久久9999亚洲精品| 激情五月婷婷综合| 亚洲激情电影在线| 亚洲电影第三页| 亚洲影院色无极综合| 久久免费视频这里只有精品| 另类春色校园亚洲| 国产精品一区二区女厕厕| 在线成人av.com| 欧美一区二区三区四区视频| 免费观看30秒视频久久| 国产日产欧美a一级在线| 亚洲东热激情| 久久成人免费日本黄色| 欧美日韩精品三区| 亚洲国产成人精品女人久久久| 亚洲私拍自拍| 欧美精品一卡| 国产一区二区三区日韩| 亚洲欧美精品一区| 蜜臀av在线播放一区二区三区| 国产精品久久77777| 精品二区视频| 亚洲国产婷婷香蕉久久久久久99| 亚洲国产精品视频一区| 国产精品欧美风情| 亚洲激情亚洲| 国产欧美精品xxxx另类| 嫩模写真一区二区三区三州| 欧美1级日本1级| 亚洲黄色成人| 欧美日韩精品二区| 亚洲桃花岛网站| 国产精品青草综合久久久久99 | 欧美日韩在线观看一区二区三区 | 久久综合久久美利坚合众国|