久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

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

javascript

Licia:最全最实用的 JavaScript 工具库

發布時間:2024/4/17 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Licia:最全最实用的 JavaScript 工具库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

在業務開發過程中,我們經常會重復使用日期格式化cookie 操作模板瀏覽器判斷類型判斷等功能。為了避免不同項目之間進行復制粘貼,可以將這些常用的函數封裝到一起并發布 npm 包。在將近三年的前端開發工作中,筆者將自己平時用到的工具庫統統封裝到了一個項目中 Licia。目前所包含模塊已達三百個,基本可以滿足前端的日常工發需求。如果你對該項目感興趣,歡迎試用并幫忙持續改進:)

使用方法

一、安裝 npm 包

首先安裝 npm 包到本地。

npm i licia --save 復制代碼

安裝完之后,你就可以直接在項目中引用模塊了,就像使用 lodash 一樣。

var uuid = require('licia/uuid');console.log(uuid()); // -> 0e3b84af-f911-4a55-b78a-cedf6f0bd815 復制代碼

二、使用打包工具

該項目自帶打包工具 eustia,可以通過配置文件或命令行掃描源碼自動生成項目專用的工具庫。

npm i eustia -g 復制代碼

假設你想html文件中使用trim方法,先直接在代碼中使用:

<html> <head><meta charset="utf-8"/><title>Eustia</title><script src="util.js"></script> </head> <body><script>var projectName = _.trim(' Eustia ');// Some code...</script> </body> </html> 復制代碼

然后跑下命令:

eustia build 復制代碼

該工具會掃描你的html代碼并生成一個util.js(默認文件名)文件,大功告成!

PS: 之前做的手機調試工具 eruda 源碼里的 util.js 就是使用該工具生成的:)

三、使用在線工具生成 util 庫

你可以直接訪問 eustia.liriliri.io/builder.htm… 在輸入框輸入需要的工具函數(以空格分隔),然后點擊下載 util.js 文件并將該文件放入項目中去即可。

比如在小程序中你需要使用時間格式化,直接輸入 dateFormat 后將生成的 util.js 放入小程序源碼中,之后再在代碼里引用:

import { dateFormat } from './util.js';dateFormat(1525764204163, 'yyyy-mm-dd HH:MM:ss'); // -> '2018-05-08 15:23:24' 復制代碼

支持模塊匯總

$

jQuery like style dom manipulator.

Available methods

offset, hide, show, first, last, get, eq, on, off, html, text, val, css, attr, data, rmAttr, remove, addClass, rmClass, toggleClass, hasClass, append, prepend, before, after

var $btn = $('#btn'); $btn.html('eustia'); $btn.addClass('btn'); $btn.show(); $btn.on('click', function () {// Do something... }); 復制代碼

$attr

Element attribute manipulation.

Get the value of an attribute for the first element in the set of matched elements.

NameTypeDesc
elementstring array elementElements to manipulate
namestringAttribute name
returnstringAttribute value of first element

Set one or more attributes for the set of matched elements.

NameTypeDesc
elementstring array elementElements to manipulate
namestringAttribute name
valuestringAttribute value
NameTypeDesc
elementstring array elementElements to manipulate
attributesobjectObject of attribute-value pairs to set

remove

Remove an attribute from each element in the set of matched elements.

NameTypeDesc
elementstring array elementElements to manipulate
namestringAttribute name
$attr('#test', 'attr1', 'test'); $attr('#test', 'attr1'); // -> test $attr.remove('#test', 'attr1'); $attr('#test', {'attr1': 'test','attr2': 'test' }); 復制代碼

$class

Element class manipulations.

add

Add the specified class(es) to each element in the set of matched elements.

NameTypeDesc
elementstring array elementElements to manipulate
namesstring arrayClasses to add

has

Determine whether any of the matched elements are assigned the given class.

NameTypeDesc
elementstring array elementElements to manipulate
namestringClass name
returnbooleanTrue if elements has given class name

toggle

Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the state argument.

NameTypeDesc
elementstring array elementElements to manipulate
namestringClass name to toggle

remove

Remove a single class, multiple classes, or all classes from each element in the set of matched elements.

NameTypeDesc
elementstring array elementElements to manipulate
namesstringClass names to remove
$class.add('#test', 'class1'); $class.add('#test', ['class1', 'class2']); $class.has('#test', 'class1'); // -> true $class.remove('#test', 'class1'); $class.has('#test', 'class1'); // -> false $class.toggle('#test', 'class1'); $class.has('#test', 'class1'); // -> true 復制代碼

$css

Element css manipulation.

Get the computed style properties for the first element in the set of matched elements.

NameTypeDesc
elementstring array elementElements to manipulate
namestringProperty name
returnstringCss value of first element

Set one or more CSS properties for the set of matched elements.

NameTypeDesc
elementstring array elementElements to manipulate
namestringProperty name
valuestringCss value
NameTypeDesc
elementstring array elementElements to manipulate
propertiesobjectObject of css-value pairs to set
$css('#test', {'color': '#fff','background': 'black' }); $css('#test', 'display', 'block'); $css('#test', 'color'); // -> #fff 復制代碼

$data

Wrapper of $attr, adds data- prefix to keys.

$data('#test', 'attr1', 'eustia'); 復制代碼

$event

bind events to certain dom elements.

function clickHandler() {// Do something... } $event.on('#test', 'click', clickHandler); $event.off('#test', 'click', clickHandler); 復制代碼

$insert

Insert html on different position.

before

Insert content before elements.

after

Insert content after elements.

prepend

Insert content to the beginning of elements.

append

Insert content to the end of elements.

NameTypeDesc
elementstring array elementElements to manipulate
contentstringHtml strings
// <div id="test"><div class="mark"></div></div> $insert.before('#test', '<div>licia</div>'); // -> <div>licia</div><div id="test"><div class="mark"></div></div> $insert.after('#test', '<div>licia</div>'); // -> <div id="test"><div class="mark"></div></div><div>licia</div> $insert.prepend('#test', '<div>licia</div>'); // -> <div id="test"><div>licia</div><div class="mark"></div></div> $insert.append('#test', '<div>licia</div>'); // -> <div id="test"><div class="mark"></div><div>licia</div></div> 復制代碼

$offset

Get the position of the element in document.

NameTypeDesc
elementstring array elementElements to get offset
$offset('#test'); // -> {left: 0, top: 0, width: 0, height: 0} 復制代碼

$property

Element property html, text, val getter and setter.

html

Get the HTML contents of the first element in the set of matched elements or set the HTML contents of every matched element.

text

Get the combined text contents of each element in the set of matched elements, including their descendants, or set the text contents of the matched elements.

val

Get the current value of the first element in the set of matched elements or set the value of every matched element.

$property.html('#test', 'licia'); $property.html('#test'); // -> licia 復制代碼

$remove

Remove the set of matched elements from the DOM.

NameTypeDesc
elementstring array elementElements to delete
$remove('#test'); 復制代碼

$safeEls

Convert value into an array, if it's a string, do querySelector.

NameTypeDesc
valueelement array stringValue to convert
returnarrayArray of elements
$safeEls('.test'); // -> Array of elements with test class 復制代碼

$show

Show elements.

NameTypeDesc
elementstring array elementElements to show
$show('#test'); 復制代碼

Blob

Use Blob when available, otherwise BlobBuilder.

constructor

NameTypeDesc
partsarrayBlob parts
[opts]objectOptions
var blob = new Blob([]); 復制代碼

Class

Create JavaScript class.

NameTypeDesc
methodsobjectPublic methods
[statics]objectStatic methods
returnfunctionFunction used to create instances
var People = Class({initialize: function People(name, age){this.name = name;this.age = age;},introduce: function (){return 'I am ' + this.name + ', ' + this.age + ' years old.';} });var Student = People.extend({initialize: function Student(name, age, school){this.callSuper(People, 'initialize', arguments);this.school = school;},introduce: function (){return this.callSuper(People, 'introduce') + '\n I study at ' + this.school + '.';} }, {is: function (obj){return obj instanceof Student;} });var a = new Student('allen', 17, 'Hogwarts'); a.introduce(); // -> 'I am allen, 17 years old. \n I study at Hogwarts.' Student.is(a); // -> true 復制代碼

Color

Color converter.

constructor

NameTypeDesc
colorstring objectColor to convert

toRgb

Get color rgb string format.

toHex

Get color hex string format.

toHsl

Get color hsl string format.

parse

[static] Parse color string into object containing value and model.

NameTypeDesc
colorstringColor string
returnobjectObject containing value and model
Color.parse('rgb(170, 287, 204, 0.5)'); // -> {val: [170, 187, 204, 0.5], model: 'rgb'} var color = new Color('#abc'); color.toRgb(); // -> 'rgb(170, 187, 204)' color.toHsl(); // -> 'hsl(210, 25%, 73%)' 復制代碼

Dispatcher

Flux dispatcher.

Related docs.

var dispatcher = new Dispatcher();dispatcher.register(function (payload) {switch (payload.actionType){// Do something} });dispatcher.dispatch({actionType: 'action' }); 復制代碼

Emitter

Event emitter class which provides observer pattern.

on

Bind event.

off

Unbind event.

once

Bind event that trigger once.

NameTypeDesc
eventstringEvent name
listenerfunctionEvent listener

emit

Emit event.

NameTypeDesc
eventstringEvent name
...args*Arguments passed to listener

mixin

[static] Mixin object class methods.

NameTypeDesc
objobjectObject to mixin
var event = new Emitter(); event.on('test', function () { console.log('test') }); event.emit('test'); // Logs out 'test'. Emitter.mixin({}); 復制代碼

Enum

Enum type implementation.

constructor

NameTypeDesc
arrarrayArray of strings
NameTypeDesc
objobjectPairs of key and value
var importance = new Enum(['NONE', 'TRIVIAL', 'REGULAR', 'IMPORTANT', 'CRITICAL' ]);if (val === importance.CRITICAL) {// Do something. } 復制代碼

JsonTransformer

Json to json transformer.

constructor

NameTypeDesc
[data={}]objectJson object to manipulate

set

Set object value.

NameTypeDesc
[key]stringObject key
val*Value to set

If key is not given, the whole source object is replaced by val.

get

Get object value.

NameTypeDesc
[key]stringObject key
return*Specified value or whole object

remove

NameTypeDesc
keyarray stringObject keys to remove

map

Shortcut for array map.

NameTypeDesc
fromstringFrom object path
tostringTarget object path
fnfunctionFunction invoked per iteration

filter

Shortcut for array filter.

compute

Compute value from several object values.

NameTypeDesc
fromarray stringSource values
tostringTarget object path
fnfunctionFunction to compute target value
var data = new JsonTransformer({books: [{title: 'Book 1',price: 5}, {title: 'Book 2',price: 10}],author: {lastname: 'Su',firstname: 'RedHood'} }); data.filter('books', function (book) { return book.price > 5 }); data.compute('author', function (author) { return author.firstname + author.lastname }); data.set('count', data.get('books').length); data.get(); // -> {books: [{title: 'Book 2', price: 10}], author: 'RedHoodSu', count: 1} 復制代碼

LinkedList

Doubly-linked list implementation.

push

Add an value to the end of the list.

NameTypeDesc
val*Value to push
returnnumberCurrent size

pop

Get the last value of the list.

unshift

Add an value to the head of the list.

shift

Get the first value of the list.

forEach

Iterate over the list.

toArr

Convert the list to a JavaScript array.

var linkedList = new LinkedList(); linkedList.push(5); linkedList.pop(); // -> 5 復制代碼

LocalStore

LocalStorage wrapper.

Extend from Store.

constructor

NameTypeDesc
namestringLocalStorage item name
dataobjectDefault data
var store = new LocalStore('licia'); store.set('name', 'licia'); 復制代碼

Logger

Simple logger with level filter.

constructor

NameTypeDesc
namestringLogger name
[level=DEBUG]numberLogger level

setLevel

NameTypeDesc
levelnumber stringLogger level

getLevel

Get current level.

trace, debug, info, warn, error

Logging methods.

Log Levels

TRACE, DEBUG, INFO, WARN, ERROR and SILENT.

var logger = new Logger('licia', Logger.level.ERROR); logger.trace('test');// Format output. logger.formatter = function (type, argList) {argList.push(new Date().getTime());return argList; };logger.on('all', function (type, argList) {// It's not affected by log level. });logger.on('debug', function (argList) {// Affected by log level. }); 復制代碼

MutationObserver

Safe MutationObserver, does nothing if MutationObserver is not supported.

var observer = new MutationObserver(function (mutations) {// Do something. }); observer.observe(document.htmlElement); observer.disconnect(); 復制代碼

Promise

Lightweight Promise implementation.

Promises spec

function get(url) {return new Promise(function (resolve, reject){var req = new XMLHttpRequest();req.open('GET', url);req.onload = function (){req.status == 200 ? resolve(req.reponse) : reject(Error(req.statusText));};req.onerror = function () { reject(Error('Network Error')) };req.send();}); }get('test.json').then(function (result) {// Do something... }); 復制代碼

Queue

Queue data structure.

clear

Clear the queue.

enqueue

Add an item to the queue.

NameTypeDesc
item*Item to enqueue
returnnumberCurrent size

dequeue

Remove the first item of the queue.

peek

Get the first item without removing it.

forEach

Iterate over the queue.

NameTypeDesc
iterateefunctionFunction invoked iteration
[ctx]*Function context

toArr

Convert queue to a JavaScript array.

var queue = new Queue();console.log(queue.size); // -> 0 queue.enqueue(2); queue.enqueue(3); queue.dequeue(); // -> 2 console.log(queue.size); // -> 1 queue.peek(); // -> 3 console.log(queue.size); // -> 1 復制代碼

ReduceStore

Simplified redux like state container.

constructor

NameTypeDesc
reducerfunctionFunction returns next state
initialState*Initial state

subscribe

Add a change listener.

NameTypeDesc
listenerfunctionCallback to invoke on every dispatch
returnfunctionFunction to unscribe

dispatch

Dispatch an action.

NameTypeDesc
actionobjectObject representing changes
returnobjectSame action object

getState

Get the current state.

var store = new ReduceStore(function (state, action) {switch (action.type){case 'INCREMENT': return state + 1;case 'DECREMENT': return state - 1;default: return state;} }, 0);store.subscribe(function () {console.log(store.getState()); });store.dispatch({type: 'INCREMENT'}); // 1 store.dispatch({type: 'INCREMENT'}); // 2 store.dispatch({type: 'DECREMENT'}); // 1 復制代碼

Select

Simple wrapper of querySelectorAll to make dom selection easier.

constructor

NameTypeDesc
selectorstringDom selector string

find

Get desdendants of current matched elements.

NameTypeDesc
selectorstringDom selector string

each

Iterate over matched elements.

NameTypeDesc
fnfunctionFunction to execute for each element
var $test = new Select('#test'); $test.find('.test').each(function (idx, element) {// Manipulate dom nodes }); 復制代碼

SessionStore

SessionStorage wrapper.

Extend from Store.

constructor

NameTypeDesc
namestringSessionStorage item name
dataobjectDefault data
var store = new SessionStore('licia'); store.set('name', 'licia'); 復制代碼

Stack

Stack data structure.

clear

Clear the stack.

push

Add an item to the stack.

NameTypeDesc
item*Item to add
returnnumberCurrent size

pop

Get the last item of the stack.

peek

Get the last item without removing it.

forEach

Iterate over the stack.

NameTypeDesc
iterateefunctionFunction invoked iteration
[ctx]*Function context

toArr

Convert the stack to a JavaScript stack.

var stack = new Stack();stack.push(2); // -> 1 stack.push(3); // -> 2 stack.pop(); // -> 3 復制代碼

State

Simple state machine.

Extend from Emitter.

constructor

NameTypeDesc
initialstringInitial state
eventsstringEvents to change state

is

Check current state.

NameTypeDesc
valuestringState to check
returnbooleanTrue if current state equals given value
var state = new State('empty', {load: {from: 'empty', to: 'pause'},play: {from: 'pause', to: 'play'},pause: {from: ['play', 'empty'], to: 'pause'},unload: {from: ['play', 'pause'], to: 'empty'} });state.is('empty'); // -> true state.load(); state.is('pause'); // -> true state.on('play', function (src) {console.log(src); // -> 'eustia' }); state.on('error', function (err, event) {// Error handler }); state.play('eustia'); 復制代碼

Store

Memory storage.

Extend from Emitter.

constructor

NameTypeDesc
dataobjectInitial data

set

Set value.

NameTypeDesc
keystringValue key
val*Value to set

Set values.

NameTypeDesc
valsobjectKey value pairs

This emit a change event whenever is called.

get

Get value.

NameTypeDesc
keystringValue key
return*Value of given key

Get values.

NameTypeDesc
keysarrayArray of keys
returnobjectKey value pairs

remove

Remove value.

NameTypeDesc
keystring arrayKey to remove

clear

Clear all data.

each

Iterate over values.

NameTypeDesc
fnfunctionFunction invoked per interation
var store = new Store('test'); store.set('user', {name: 'licia'}); store.get('user').name; // -> 'licia' store.clear(); store.each(function (val, key) {// Do something. }); store.on('change', function (key, newVal, oldVal) {// It triggers whenever set is called. }); 復制代碼

Tween

Tween engine for JavaScript animations.

Extend from Emitter.

constructor

NameTypeDesc
objobjectValues to tween

to

NameTypeDesc
destinationobjFinal properties
durationnumberTween duration
easestring functionEasing function

play

Begin playing forward.

pause

Pause the animation.

paused

Get animation paused state.

progress

Update or get animation progress.

NameTypeDesc
[progress]numberNumber between 0 and 1
var pos = {x: 0, y: 0};var tween = new Tween(pos); tween.on('update', function (target) {console.log(target.x, target.y); }).on('end', function (target) {console.log(target.x, target.y); // -> 100, 100 }); tween.to({x: 100, y: 100}, 1000, 'inElastic').play(); 復制代碼

Url

Simple url manipulator.

constructor

NameTypeDesc
url=locationstringUrl string

setQuery

Set query value.

NameTypeDesc
namestringQuery name
valuestringQuery value
returnUrlthis
NameTypeDesc
namesobjectquery object
returnUrlthis

rmQuery

Remove query value.

NameTypeDesc
namestring arrayQuery name
returnUrlthis

parse

[static] Parse url into an object.

NameTypeDesc
urlstringUrl string
returnobjectUrl object

stringify

[static] Stringify url object into a string.

NameTypeDesc
urlobjectUrl object
returnstringUrl string

An url object contains the following properties:

NameDesc
protocolThe protocol scheme of the URL (e.g. http:)
slashesA boolean which indicates whether the protocol is followed by two forward slashes (//)
authAuthentication information portion (e.g. username:password)
hostnameHost name without port number
portOptional port number
pathnameURL path
queryParsed object containing query string
hashThe "fragment" portion of the URL including the pound-sign (#)
var url = new Url('http://example.com:8080?eruda=true'); console.log(url.port); // -> '8080' url.query.foo = 'bar'; url.rmQuery('eruda'); utl.toString(); // -> 'http://example.com:8080/?foo=bar' 復制代碼

Validator

Object values validation.

constructor

NameTypeDesc
optionsobjectValidation configuration

validate

Validate object.

NameTypeDesc
objobjectObject to validate
return*Validation result, true means ok

addPlugin

[static] Add plugin.

NameTypeDesc
namestringPlugin name
pluginfunctionValidation handler

Default Plugins

Required, number, boolean, string and regexp.

Validator.addPlugin('custom', function (val, key, config) {if (typeof val === 'string' && val.length === 5) return true;return key + ' should be a string with length 5'; }); var validator = new Validator({'test': {required: true,custom: true} }); validator.validate({}); // -> 'test is required' validator.validate({test: 1}); // -> 'test should be a string with length 5'; validator.validate({test: 'licia'}); // -> true 復制代碼

abbrev

Calculate the set of unique abbreviations for a given set of strings.

NameTypeDesc
...arrstringList of names
returnobjectAbbreviation map
abbrev('lina', 'luna'); // -> {li: 'lina', lin: 'lina', lina: 'lina', lu: 'luna', lun: 'luna', luna: 'luna'} 復制代碼

after

Create a function that invokes once it's called n or more times.

NameTypeDesc
nnumberNumber of calls before invoked
fnfunctionFunction to restrict
returnfunctionNew restricted function
var fn = after(5, function() {// -> Only invoke after fn is called 5 times. }); 復制代碼

ajax

Perform an asynchronous HTTP request.

NameTypeDesc
optionsobjectAjax options

Available options:

NameTypeDesc
urlstringRequest url
datastring objectRequest data
dataType=jsonstringResponse type(json, xml)
contentType=application/x-www-form-urlencodedstringRequest header Content-Type
successfunctionSuccess callback
errorfunctionError callback
completefunctionCallback after request
timeoutnumberRequest timeout

get

Shortcut for type = GET;

post

Shortcut for type = POST;

NameTypeDesc
urlstringRequest url
[data]string objectRequest data
successfunctionSuccess callback
dataTypefunctionResponse type
ajax({url: 'http://example.com',data: {test: 'true'},error: function () {},success: function (data){// ...},dataType: 'json' });ajax.get('http://example.com', {}, function (data) {// ... }); 復制代碼

allKeys

Retrieve all the names of object's own and inherited properties.

NameTypeDesc
objobjectObject to query
returnarrayArray of all property names

Members of Object's prototype won't be retrieved.

var obj = Object.create({zero: 0}); obj.one = 1; allKeys(obj) // -> ['zero', 'one'] 復制代碼

arrToMap

Make an object map using array of strings.

NameTypeDesc
arrarrayArray of strings
val=true*Key value
returnobjectObject map
var needPx = arrToMap(['column-count', 'columns', 'font-weight', 'line-weight', 'opacity', 'z-index', 'zoom' ]);if (needPx[key]) val += 'px'; 復制代碼

atob

Use Buffer to emulate atob when running in node.

atob('SGVsbG8gV29ybGQ='); // -> 'Hello World' 復制代碼

average

Get average value of given numbers.

NameTypeDesc
...numnumberNumbers to calculate
returnnumberAverage value
average(5, 3, 1); // -> 3 復制代碼

base64

Basic base64 encoding and decoding.

encode

Turn a byte array into a base64 string.

NameTypeDesc
arrarrayByte array
returnstringBase64 string
base64.encode([168, 174, 155, 255]); // -> 'qK6b/w==' 復制代碼

decode

Turn a base64 string into a byte array.

NameTypeDesc
strstringBase64 string
returnarrayByte array
base64.decode('qK6b/w=='); // -> [168, 174, 155, 255] 復制代碼

before

Create a function that invokes less than n times.

NameTypeDesc
nnumberNumber of calls at which fn is no longer invoked
fnfunctionFunction to restrict
returnfunctionNew restricted function

Subsequent calls to the created function return the result of the last fn invocation.

$(element).on('click', before(5, function() {})); // -> allow function to be call 4 times at last. 復制代碼

bind

Create a function bound to a given object.

NameTypeDesc
fnfunctionFunction to bind
ctx*This binding of given fn
[...rest]*Optional arguments
returnfunctionNew bound function
var fn = bind(function (msg) {console.log(this.name + ':' + msg); }, {name: 'eustia'}, 'I am a utility library.'); fn(); // -> 'eustia: I am a utility library.' 復制代碼

btoa

Use Buffer to emulate btoa when running in node.

btoa('Hello World'); // -> 'SGVsbG8gV29ybGQ=' 復制代碼

bubbleSort

Bubble sort implementation.

NameTypeDesc
arrarrayArray to sort
[cmp]functionComparator
bubbleSort([2, 1]); // -> [1, 2] 復制代碼

callbackify

Convert a function that returns a Promise to a function following the error-first callback style.

NameTypeDesc
fnfunctionFunction that returns a Promise
returnfunctionFunction following the error-fist callback style
function fn() {return new Promise(function (resolve, reject){// ...}); }var cbFn = callbackify(fn);cbFn(function (err, value) {// ... }); 復制代碼

camelCase

Convert string to "camelCase".

NameTypeDesc
strstringString to convert
returnstringCamel cased string
camelCase('foo-bar'); // -> fooBar camelCase('foo bar'); // -> fooBar camelCase('foo_bar'); // -> fooBar camelCase('foo.bar'); // -> fooBar 復制代碼

capitalize

Convert the first character to upper case and the remaining to lower case.

NameTypeDesc
strstringString to capitalize
returnstringCapitalized string
capitalize('rED'); // -> Red 復制代碼

castPath

Cast value into a property path array.

NameTypeDesc
str*Value to inspect
[obj]objectObject to query
returnarrayProperty path array
castPath('a.b.c'); // -> ['a', 'b', 'c'] castPath(['a']); // -> ['a'] castPath('a[0].b'); // -> ['a', '0', 'b'] castPath('a.b.c', {'a.b.c': true}); // -> ['a.b.c'] 復制代碼

centerAlign

Center align text in a string.

NameTypeDesc
strstring arrayString to align
[width]numberTotal width of each line
returnstringCenter aligned string
centerAlign('test', 8); // -> ' test' centerAlign('test\nlines', 8); // -> ' test\n lines' centerAlign(['test', 'lines'], 8); // -> ' test\n lines' 復制代碼

char

Return string representing a character whose Unicode code point is the given integer.

NameTypeDesc
numnumberInteger to convert
returnstringString representing corresponding char
char(65); // -> 'A' char(97); // -> 'a' 復制代碼

chunk

Split array into groups the length of given size.

NameTypeDesc
arrarrayArray to process
size=1numberLength of each chunk
chunk([1, 2, 3, 4], 2); // -> [[1, 2], [3, 4]] chunk([1, 2, 3, 4], 3); // -> [[1, 2, 3], [4]] chunk([1, 2, 3, 4]); // -> [[1], [2], [3], [4]] 復制代碼

clamp

Clamp number within the inclusive lower and upper bounds.

NameTypeDesc
nnumberNumber to clamp
[lower]numberLower bound
uppernumberUpper bound
returnnumberClamped number
clamp(-10, -5, 5); // -> -5 clamp(10, -5, 5); // -> 5 clamp(2, -5, 5); // -> 2 clamp(10, 5); // -> 5 clamp(2, 5); // -> 2 復制代碼

className

Utility for conditionally joining class names.

NameTypeDesc
...classstring object arrayClass names
returnstringJoined class names
className('a', 'b', 'c'); // -> 'a b c' className('a', false, 'b', 0, 1, 'c'); // -> 'a b 1 c' className('a', ['b', 'c']); // -> 'a b c' className('a', {b: false, c: true}); // -> 'a c' className('a', ['b', 'c', {d: true, e: false}]); // -> 'a b c d'; 復制代碼

clone

Create a shallow-copied clone of the provided plain object.

Any nested objects or arrays will be copied by reference, not duplicated.

NameTypeDesc
val*Value to clone
return*Cloned value
clone({name: 'eustia'}); // -> {name: 'eustia'} 復制代碼

cloneDeep

Recursively clone value.

NameTypeDesc
val*Value to clone
return*Deep cloned Value
var obj = [{a: 1}, {a: 2}]; var obj2 = cloneDeep(obj); console.log(obj[0] === obj2[1]); // -> false 復制代碼

cmpVersion

Compare version strings.

NameTypeDesc
v1stringVersion to compare
v2stringVersion to compare
returnnumberComparison result
cmpVersion('1.1.8', '1.0.4'); // -> 1 cmpVersion('1.0.2', '1.0.2'); // -> 0 cmpVersion('2.0', '2.0.0'); // -> 0 cmpVersion('3.0.1', '3.0.0.2'); // -> 1 cmpVersion('1.1.1', '1.2.3'); // -> -1 復制代碼

compact

Return a copy of the array with all falsy values removed.

The values false, null, 0, "", undefined, and NaN are falsey.

NameTypeDesc
arrarrayArray to compact
returnarrayNew array of filtered values
compact([0, 1, false, 2, '', 3]); // -> [1, 2, 3] 復制代碼

compose

Compose a list of functions.

Each function consumes the return value of the function that follows.

NameTypeDesc
...fnfunctionFunctions to compose
returnfunctionComposed function
var welcome = compose(function (name) {return 'hi: ' + name; }, function (name) {return name.toUpperCase() + '!'; });welcome('licia'); // -> 'hi: LICIA!' 復制代碼

compressImg

Compress image using canvas.

NameTypeDesc
fileFile BlobImage file
optsobjectOptions
cbfunctionCallback

Available options:

NameTypeDesc
maxWidthnumberMax width
maxHeightnumberMax height
widthnumberOutput image width
heightnumberOutput image height
mineTypestringMine type
quality=0.8numberImage quality, range from 0 to 1

In order to keep image ratio, height will be ignored when width is set.

And maxWith, maxHeight will be ignored if width or height is set.

compressImg(file, {maxWidth: 200 }, function (err, file) {// ... }); 復制代碼

concat

Concat multiple arrays into a single array.

NameTypeDesc
...arrarrayArrays to concat
returnarrayConcatenated array
concat([1, 2], [3], [4, 5]); // -> [1, 2, 3, 4, 5] 復制代碼

contain

Check if the value is present in the list.

NameTypeDesc
arrayarray objectTarget list
value*Value to check
returnbooleanTrue if value is present in the list
contain([1, 2, 3], 1); // -> true contain({a: 1, b: 2}, 1); // -> true 復制代碼

convertBase

Convert base of a number.

NameTypeDesc
numnumber stringNumber to convert
fromnumberBase from
tonumberBase to
returnstringConverted number
convertBase('10', 2, 10); // -> '2' convertBase('ff', 16, 2); // -> '11111111' 復制代碼

cookie

Simple api for handling browser cookies.

get

Get cookie value.

NameTypeDesc
keystringCookie key
returnstringCorresponding cookie value

set

Set cookie value.

NameTypeDesc
keystringCookie key
valstringCookie value
[options]objectCookie options
returnexportsModule cookie

remove

Remove cookie value.

NameTypeDesc
keystringCookie key
[options]objectCookie options
returnexportsModule cookie
cookie.set('a', '1', {path: '/'}); cookie.get('a'); // -> '1' cookie.remove('a'); 復制代碼

copy

Copy text to clipboard using document.execCommand.

NameTypeDesc
textstringText to copy
[cb]functionOptional callback
copy('text', function (err) {// Handle errors. }); 復制代碼

createAssigner

Used to create extend, extendOwn and defaults.

NameTypeDesc
keysFnfunctionFunction to get object keys
defaultsbooleanNo override when set to true
returnfunctionResult function, extend...

createUrl

CreateObjectURL wrapper.

NameTypeDesc
dataFile Blob string arrayUrl data
[opts]objectUsed when data is not a File or Blob
returnstringBlob url
createUrl('test', {type: 'text/plain'}); // -> Blob url createUrl(['test', 'test']); createUrl(new Blob([])); createUrl(new File(['test'], 'test.txt')); 復制代碼

cssSupports

Check if browser supports a given CSS feature.

NameTypeDesc
namestringCss property name
[val]stringCss property value
returnbooleanTrue if supports
cssSupports('display', 'flex'); // -> true cssSupports('display', 'invalid'); // -> false cssSupports('text-decoration-line', 'underline'); // -> true cssSupports('grid'); // -> true cssSupports('invalid'); // -> false 復制代碼

curry

Function currying.

NameTypeDesc
fnfunctionFunction to curry
returnfunctionNew curried function
var add = curry(function (a, b) { return a + b }); var add1 = add(1); add1(2); // -> 3 復制代碼

dateFormat

Simple but extremely useful date format function.

NameTypeDesc
[date=new Date]DateDate object to format
maskstringFormat mask
[utc=false]booleanUTC or not
[gmt=false]booleanGMT or not
MaskDescription
dDay of the month as digits; no leading zero for single-digit days
ddDay of the month as digits; leading zero for single-digit days
dddDay of the week as a three-letter abbreviation
ddddDay of the week as its full name
mMonth as digits; no leading zero for single-digit months
mmMonth as digits; leading zero for single-digit months
mmmMonth as a three-letter abbreviation
mmmmMonth as its full name
yyYear as last two digits; leading zero for years less than 10
yyyyYear represented by four digits
hHours; no leading zero for single-digit hours (12-hour clock)
hhHours; leading zero for single-digit hours (12-hour clock)
HHours; no leading zero for single-digit hours (24-hour clock)
HHHours; leading zero for single-digit hours (24-hour clock)
MMinutes; no leading zero for single-digit minutes
MMMinutes; leading zero for single-digit minutes
sSeconds; no leading zero for single-digit seconds
ssSeconds; leading zero for single-digit seconds
l LMilliseconds. l gives 3 digits. L gives 2 digits
tLowercase, single-character time marker string: a or p
ttLowercase, two-character time marker string: am or pm
TUppercase, single-character time marker string: A or P
TTUppercase, two-character time marker string: AM or PM
ZUS timezone abbreviation, e.g. EST or MDT
oGMT/UTC timezone offset, e.g. -0500 or +0230
SThe date's ordinal suffix (st, nd, rd, or th)
UTC:Must be the first four characters of the mask
dateFormat('isoDate'); // -> 2016-11-19 dateFormat('yyyy-mm-dd HH:MM:ss'); // -> 2016-11-19 19:00:04 dateFormat(new Date(), 'yyyy-mm-dd'); // -> 2016-11-19 復制代碼

debounce

Return a new debounced version of the passed function.

NameTypeDesc
fnfunctionFunction to debounce
waitnumberNumber of milliseconds to delay
returnfunctionNew debounced function
$(window).resize(debounce(calLayout, 300)); 復制代碼

debug

A tiny JavaScript debugging utility.

NameTypeDesc
namestringNamespace
returnfunctionFunction to print decorated log
var d = debug('test'); d('doing lots of uninteresting work'); d.enabled = false; 復制代碼

decodeUriComponent

Better decodeURIComponent that does not throw if input is invalid.

NameTypeDesc
strstringString to decode
returnstringDecoded string
decodeUriComponent('%%25%'); // -> '%%%' decodeUriComponent('%E0%A4%A'); // -> '\xE0\xA4%A' 復制代碼

defaults

Fill in undefined properties in object with the first value present in the following list of defaults objects.

NameTypeDesc
objobjectDestination object
*srcobjectSources objects
returnobjectDestination object
defaults({name: 'RedHood'}, {name: 'Unknown', age: 24}); // -> {name: 'RedHood', age: 24} 復制代碼

define

Define a module, should be used along with use.

NameTypeDesc
namestringModule name
[requires]arrayDependencies
methodfunctionModule body

The module won't be executed until it's used by use function.

define('A', function () {return 'A'; }); define('B', ['A'], function (A) {return 'B' + A; }); 復制代碼

defineProp

Shortcut for Object.defineProperty(defineProperties).

NameTypeDesc
objobjectObject to define
propstringProperty path
descriptorobjectProperty descriptor
returnobjectObject itself
NameTypeDesc
objobjectObject to define
propobjectProperty descriptors
returnobjectObject itself
var obj = {b: {c: 3}, d: 4, e: 5}; defineProp(obj, 'a', {get: function (){return this.e * 2;} }); console.log(obj.a); // -> 10 defineProp(obj, 'b.c', {set: (function (val){// this is pointed to obj.bthis.e = val;}).bind(obj) }); obj.b.c = 2; console.log(obj.a); // -> 4;obj = {a: 1, b: 2, c: 3}; defineProp(obj, {a: {get: function (){return this.c;}},b: {set: function (val){this.c = val / 2;}} }); console.log(obj.a); // -> 3 obj.b = 4; console.log(obj.a); // -> 2 復制代碼

delay

Invoke function after certain milliseconds.

NameTypeDesc
fnfunctionFunction to delay
waitnumberNumber of milliseconds to delay invocation
[...args]*Arguments to invoke fn with
delay(function (text) {console.log(text); }, 1000, 'later'); // -> Logs 'later' after one second 復制代碼

delegate

Event delegation.

add

Add event delegation.

NameTypeDesc
elelementParent element
typestringEvent type
selectorstringMatch selector
cbfunctionEvent callback

remove

Remove event delegation.

var container = document.getElementById('container'); function clickHandler() {// Do something... } delegate.add(container, 'click', '.children', clickHandler); delegate.remove(container, 'click', '.children', clickHandler); 復制代碼

detectBrowser

Detect browser info using ua.

NameTypeDesc
[ua=navigator.userAgent]stringBrowser userAgent
returnobjectObject containing name and version

Browsers supported: ie, chrome, edge, firefox, opera, safari, ios(mobile safari), android(android browser)

var browser = detectBrowser(); if (browser.name === 'ie' && browser.version < 9) {// Do something about old IE... } 復制代碼

detectOs

Detect operating system using ua.

NameTypeDesc
[ua=navigator.userAgent]stringBrowser userAgent
returnstringOperating system name

Supported os: windows, os x, linux, ios, android, windows phone

if (detectOs() === 'ios') {// Do something about ios... } 復制代碼

difference

Create an array of unique array values not included in the other given array.

NameTypeDesc
arrarrayArray to inspect
[...rest]arrayValues to exclude
returnarrayNew array of filtered values
difference([3, 2, 1], [4, 2]); // -> [3, 1] 復制代碼

dotCase

Convert string to "dotCase".

NameTypeDesc
strstringString to convert
returnstringDot cased string
dotCase('fooBar'); // -> foo.bar dotCase('foo bar'); // -> foo.bar 復制代碼

download

Trigger a file download on client side.

NameTypeDesc
dataBlob File string arrayData to download
namestringFile name
type=text/plainstringData type
download('test', 'test.txt'); 復制代碼

each

Iterate over elements of collection and invokes iteratee for each element.

NameTypeDesc
objobject arrayCollection to iterate over
iterateefunctionFunction invoked per iteration
[ctx]*Function context
each({'a': 1, 'b': 2}, function (val, key) {}); 復制代碼

easing

Easing functions adapted from http://jqueryui.com/

NameTypeDesc
percentnumberNumber between 0 and 1
returnnumberCalculated number
easing.linear(0.5); // -> 0.5 easing.inElastic(0.5, 500); // -> 0.03125 復制代碼

endWith

Check if string ends with the given target string.

NameTypeDesc
strstringThe string to search
suffixstringString suffix
returnbooleanTrue if string ends with target
endWith('ab', 'b'); // -> true 復制代碼

escape

Escapes a string for insertion into HTML, replacing &, <, >, ", `, and ' characters.

NameTypeDesc
strstringString to escape
returnstringEscaped string
escape('You & Me'); -> // -> 'You &amp; Me' 復制代碼

escapeJsStr

Escape string to be a valid JavaScript string literal between quotes.

http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4

NameTypeDesc
strstringString to escape
returnstringEscaped string
escapeJsStr('\"\n'); // -> '\\"\\\\n' 復制代碼

escapeRegExp

Escape special chars to be used as literals in RegExp constructors.

NameTypeDesc
strstringString to escape
returnstringEscaped string
escapeRegExp('[licia]'); // -> '\\[licia\\]' 復制代碼

evalCss

Load css into page.

NameTypeDesc
cssstringCss code
evalCss('body{background:#08c}'); 復制代碼

evalJs

Execute js in given context.

NameTypeDesc
jsstringJavaScript code
[ctx=global]objectContext
evalJs('5+2'); // -> 7 evalJs('this.a', {a: 2}); // -> 2 復制代碼

every

Check if predicate return truthy for all elements.

NameTypeDesc
objarray objectCollection to iterate over
predicatefunctionFunction invoked per iteration
ctx*Predicate context
returnbooleanTrue if all elements pass the predicate check
every([2, 4], function (val) {return val % 2 === 0; }); // -> false 復制代碼

extend

Copy all of the properties in the source objects over to the destination object.

NameTypeDesc
objobjectDestination object
...srcobjectSources objects
returnobjectDestination object
extend({name: 'RedHood'}, {age: 24}); // -> {name: 'RedHood', age: 24} 復制代碼

extendDeep

Recursive object extending.

NameTypeDesc
objobjectDestination object
...srcobjectSources objects
returnobjectDestination object
extendDeep({name: 'RedHood',family: {mother: 'Jane',father: 'Jack'} }, {family: {brother: 'Bruce'} }); // -> {name: 'RedHood', family: {mother: 'Jane', father: 'Jack', brother: 'Bruce'}} 復制代碼

extendOwn

Like extend, but only copies own properties over to the destination object.

NameTypeDesc
objobjectDestination object
*srcobjectSources objects
returnobjectDestination object
extendOwn({name: 'RedHood'}, {age: 24}); // -> {name: 'RedHood', age: 24} 復制代碼

extractBlockCmts

Extract block comments from source code.

NameTypeDesc
strstringString to extract
returnarrayBlock comments
extractBlockCmts('\/*licia*\/'); // -> ['licia'] 復制代碼

extractUrls

Extract urls from plain text.

NameTypeDesc
strstringText to extract
returnarrayUrl list
var str = '[Official site: http://eustia.liriliri.io](http://eustia.liriliri.io)'; extractUrl(str); // -> ['http://eustia.liriliri.io'] 復制代碼

fetch

Turn XMLHttpRequest into promise like.

Note: This is not a complete fetch pollyfill.

NameTypeDesc
urlstringRequest url
optionsobjectRequest options
returnpromiseRequest promise
fetch('test.json', {method: 'GET',timeout: 3000,headers: {},body: '' }).then(function (res) {return res.json(); }).then(function (data) {console.log(data); }); 復制代碼

fibonacci

Calculate fibonacci number.

NameTypeDesc
nnumberIndex of fibonacci sequence
returnnumberExpected fibonacci number
fibonacci(1); // -> 1 fibonacci(3); // -> 2 復制代碼

fileSize

Turn bytes into human readable file size.

NameTypeDesc
bytesnumberFile bytes
returnstringReadable file size
fileSize(5); // -> '5' fileSize(1500); // -> '1.46K' fileSize(1500000); // -> '1.43M' fileSize(1500000000); // -> '1.4G' fileSize(1500000000000); // -> '1.36T' 復制代碼

fill

Fill elements of array with value.

NameTypeDesc
arrarrayArray to fill
val*Value to fill array with
start=0numberStart position
end=arr.lengthnumberEnd position
returnarrayFilled array
fill([1, 2, 3], '*'); // -> ['*', '*', '*'] fill([1, 2, 3], '*', 1, 2); // -> [1, '*', 3] 復制代碼

filter

Iterates over elements of collection, returning an array of all the values that pass a truth test.

NameTypeDesc
objarrayCollection to iterate over
predicatefunctionFunction invoked per iteration
[ctx]*Predicate context
returnarrayArray of all values that pass predicate
filter([1, 2, 3, 4, 5], function (val) {return val % 2 === 0; }); // -> [2, 4] 復制代碼

find

Find the first value that passes a truth test in a collection.

NameTypeDesc
objarray objectCollection to iterate over
predicatefunctionFunction invoked per iteration
[ctx]*Predicate context
return*First value that passes predicate
find([{name: 'john',age: 24 }, {name: 'jane',age: 23 }], function (val) {return val.age === 23; }); // -> {name: 'jane', age: 23} 復制代碼

findIdx

Return the first index where the predicate truth test passes.

NameTypeDesc
arrarrayArray to search
predicatefunctionFunction invoked per iteration
returnnumberIndex of matched element
findIdx([{name: 'john',age: 24 }, {name: 'jane',age: 23 }], function (val) {return val.age === 23; }); // -> 1 復制代碼

findKey

Return the first key where the predicate truth test passes.

NameTypeDesc
objobjectObject to search
predicatefunctionFunction invoked per iteration
[ctx]*Predicate context
returnstringKey of matched element
findKey({a: 1, b: 2}, function (val) {return val === 1; }); // -> a 復制代碼

findLastIdx

Return the last index where the predicate truth test passes.

NameTypeDesc
arrarrayArray to search
predicatefunctionFunction invoked per iteration
returnnumberLast index of matched element
findLastIdx([{name: 'john',age: 24 }, {name: 'jane',age: 23 }, {name: 'kitty',age: 24 }], function (val) {return val.age === 24; }); // -> 2 復制代碼

flatten

Recursively flatten an array.

NameTypeDesc
arrarrayArray to flatten
returnarrayNew flattened array
flatten(['a', ['b', ['c']], 'd', ['e']]); // -> ['a', 'b', 'c', 'd', 'e'] 復制代碼

fnParams

Get a function parameter's names.

NameTypeDesc
fnfunctionFunction to get parameters
returnarrayNames
fnParams(function (a, b) {}); // -> ['a', 'b'] 復制代碼

format

Format string in a printf-like format.

NameTypeDesc
strstringString to format
...values*Values to replace format specifiers
returnstringFormatted string

Format Specifiers

SpecifierDesc
%sString
%d, %iInteger
%fFloating point value
%oObject
format('%s_%s', 'foo', 'bar'); // -> 'foo bar' 復制代碼

fraction

Convert number to fraction.

NameTypeDesc
numnumberNumber to convert
returnstringCorresponding fraction
fraction(1.2); // -> '6/5' 復制代碼

freeze

Shortcut for Object.freeze.

Use Object.defineProperties if Object.freeze is not supported.

NameTypeDesc
objobjectObject to freeze
returnobjectObject passed in
var a = {b: 1}; freeze(a); a.b = 2; console.log(a); // -> {b: 1} 復制代碼

freezeDeep

Recursively use Object.freeze.

NameTypeDesc
objobjectObject to freeze
returnobjectObject passed in
var a = {b: {c: 1}}; freezeDeep(a); a.b.c = 2; console.log(a); // -> {b: {c: 1}} 復制代碼

gcd

Compute the greatest common divisor using Euclid's algorithm.

NameTypeDesc
anumberNumber to calculate
bnumberNumber to calculate
returnnumberGreatest common divisor
gcd(121, 44); // -> 11 復制代碼

getUrlParam

Get url param.

NameTypeDesc
namestringParam name
url=locationstringUrl to get param
returnstringParam value
getUrlParam('test', 'http://example.com/?test=true'); // -> 'true' 復制代碼

has

Checks if key is a direct property.

NameTypeDesc
objobjectObject to query
keystringPath to check
returnbooleanTrue if key is a direct property
has({one: 1}, 'one'); // -> true 復制代碼

hotkey

Capture keyboard input to trigger given events.

on

Register keyboard listener.

NameTypeDesc
keystringKey string
listenerfunctionKey listener

off

Unregister keyboard listener.

hotkey.on('k', function () {console.log('k is pressed'); }); function keyDown() {} hotkey.on('shift+a, shift+b', keyDown); hotkey.off('shift+a', keyDown); 復制代碼

hslToRgb

Convert hsl to rgb.

NameTypeDesc
hslarrayHsl values
returnarrayRgb values
hslToRgb([165, 59, 50, 0.8]); // -> [52, 203, 165, 0.8] 復制代碼

identity

Return the first argument given.

NameTypeDesc
val*Any value
return*Given value
identity('a'); // -> 'a' 復制代碼

idxOf

Get the index at which the first occurrence of value.

NameTypeDesc
arrarrayArray to search
val*Value to search for
fromIdx=0numberIndex to search from
idxOf([1, 2, 1, 2], 2, 2); // -> 3 復制代碼

indent

Indent each line in a string.

NameTypeDesc
strstringString to indent
[char]stringCharacter to prepend
[len]numberIndent length
returnstringIndented string
indent('foo\nbar', ' ', 4); // -> 'foo\n bar' 復制代碼

inherits

Inherit the prototype methods from one constructor into another.

NameTypeDesc
ClassfunctionChild Class
SuperClassfunctionSuper Class
function People(name) {this._name = name; } People.prototype = {getName: function (){return this._name;} }; function Student(name) {this._name = name; } inherits(Student, People); var s = new Student('RedHood'); s.getName(); // -> 'RedHood' 復制代碼

insertionSort

Insertion sort implementation.

NameTypeDesc
arrarrayArray to sort
[cmp]functionComparator
insertionSort([2, 1]); // -> [1, 2] 復制代碼

intersect

Compute the list of values that are the intersection of all the arrays.

NameTypeDesc
...arrarrayArrays to inspect
returnarrayNew array of inspecting values
intersect([1, 2, 3, 4], [2, 1, 10], [2, 1]); // -> [1, 2] 復制代碼

intersectRange

Intersect two ranges.

NameTypeDesc
aobjectRange a
bobjectRange b
returnobjectIntersection if exist
intersectRange({start: 0, end: 12}, {start: 11, end: 13}); // -> {start: 11, end: 12} intersectRange({start: 0, end: 5}, {start: 6, end: 7}); // -> undefined 復制代碼

invert

Create an object composed of the inverted keys and values of object.

NameTypeDesc
objobjectObject to invert
returnobjectNew inverted object

If object contains duplicate values, subsequent values overwrite property assignments of previous values unless multiValue is true.

invert({a: 'b', c: 'd', e: 'f'}); // -> {b: 'a', d: 'c', f: 'e'} 復制代碼

isAbsoluteUrl

Check if an url is absolute.

NameTypeDesc
urlstringUrl to check
returnbooleanTrue if url is absolute
isAbsoluteUrl('http://www.surunzi.com'); // -> true isAbsoluteUrl('//www.surunzi.com'); // -> false isAbsoluteUrl('surunzi.com'); // -> false 復制代碼

isArgs

Check if value is classified as an arguments object.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is an arguments object
(function () {isArgs(arguments); // -> true })(); 復制代碼

isArr

Check if value is an Array object.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is an Array object
isArr([]); // -> true isArr({}); // -> false 復制代碼

isArrBuffer

Check if value is an ArrayBuffer.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is an ArrayBuffer
isArrBuffer(new ArrayBuffer(8)); // -> true 復制代碼

isArrLike

Check if value is array-like.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is array like

Function returns false.

isArrLike('test'); // -> true isArrLike(document.body.children); // -> true; isArrLike([1, 2, 3]); // -> true 復制代碼

isBlob

Check if value is a Blob.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is a Blob
isBlob(new Blob([])); // -> true; isBlob([]); // -> false 復制代碼

isBool

Check if value is a boolean primitive.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is a boolean
isBool(true); // -> true isBool(false); // -> true isBool(1); // -> false 復制代碼

isBrowser

Check if running in a browser.

console.log(isBrowser); // -> true if running in a browser 復制代碼

isBuffer

Check if value is a buffer.

NameTypeDesc
val*The value to check
returnbooleanTrue if value is a buffer
isBuffer(new Buffer(4)); // -> true 復制代碼

isClose

Check if values are close(almost equal) to each other.

abs(a-b) <= max(relTol * max(abs(a), abs(b)), absTol)

NameTypeDesc
anumberNumber to compare
bnumberNumber to compare
relTol=1e-9numberRelative tolerance
absTol=0numberAbsolute tolerance
returnbooleanTrue if values are close
isClose(1, 1.0000000001); // -> true isClose(1, 2); // -> false isClose(1, 1.2, 0.3); // -> true isClose(1, 1.2, 0.1, 0.3); // -> true 復制代碼

isDataUrl

Check if a string is a valid data url.

NameTypeDesc
strstringString to check
returnbooleanTrue if string is a data url
isDataUrl('http://eustia.liriliri.io'); // -> false isDataUrl('data:text/plain;base64,SGVsbG8sIFdvcmxkIQ%3D%3D'); // -> true 復制代碼

isDate

Check if value is classified as a Date object.

NameTypeDesc
val*value to check
returnbooleanTrue if value is a Date object
isDate(new Date()); // -> true 復制代碼

isEl

Check if value is a DOM element.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is a DOM element
isEl(document.body); // -> true 復制代碼

isEmail

Loosely validate an email address.

NameTypeDesc
valstringValue to check
returnbooleanTrue if value is an email like string
isEmail('surunzi@foxmail.com'); // -> true 復制代碼

isEmpty

Check if value is an empty object or array.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is empty
isEmpty([]); // -> true isEmpty({}); // -> true isEmpty(''); // -> true 復制代碼

isEqual

Performs an optimized deep comparison between the two objects, to determine if they should be considered equal.

NameTypeDesc
val*Value to compare
other*Other value to compare
returnbooleanTrue if values are equivalent
isEqual([1, 2, 3], [1, 2, 3]); // -> true 復制代碼

isErr

Check if value is an error.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is an error
isErr(new Error()); // -> true 復制代碼

isEven

Check if number is even.

NameTypeDesc
numnumberNumber to check
returnbooleanTrue if number is even
isOdd(0); // -> true isOdd(1); // -> false isOdd(2); // -> true 復制代碼

isFile

Check if value is a file.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is a file
isFile(new File(['test'], "test.txt", {type: "text/plain"})); // -> true 復制代碼

isFinite

Check if value is a finite primitive number.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is a finite number
isFinite(3); // -> true isFinite(Infinity); // -> false 復制代碼

isFn

Check if value is a function.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is a function

Generator function is also classified as true.

isFn(function() {}); // -> true isFn(function*() {}); // -> true 復制代碼

isGeneratorFn

Check if value is a generator function.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is a generator function
isGeneratorFn(function * () {}); // -> true; isGeneratorFn(function () {}); // -> false; 復制代碼

isInt

Checks if value is classified as a Integer.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is correctly classified
isInt(5); // -> true isInt(5.1); // -> false isInt({}); // -> false 復制代碼

isJson

Check if value is a valid JSON.

It uses JSON.parse() and a try... catch block.

NameTypeDesc
valstringJSON string
returnbooleanTrue if value is a valid JSON
isJson('{"a": 5}'); // -> true isJson("{'a': 5}"); // -> false 復制代碼

isLeapYear

Check if a year is a leap year.

NameTypeDesc
yearnumberYear to check
returnbooleanTrue if year is a leap year
isLeapYear(2000); // -> true isLeapYear(2002); // -> false 復制代碼

isMatch

Check if keys and values in src are contained in obj.

NameTypeDesc
objobjectObject to inspect
srcobjectObject of property values to match
returnbooleanTrue if object is match
isMatch({a: 1, b: 2}, {a: 1}); // -> true 復制代碼

isMiniProgram

Check if running in wechat mini program.

console.log(isMiniProgram); // -> true if running in mini program. 復制代碼

isMobile

Check whether client is using a mobile browser using ua.

NameTypeDesc
[ua=navigator.userAgent]stringUser agent
returnbooleanTrue if ua belongs to mobile browsers
isMobile(navigator.userAgent); 復制代碼

isNaN

Check if value is an NaN.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is an NaN

Undefined is not an NaN, different from global isNaN function.

isNaN(0); // -> false isNaN(NaN); // -> true 復制代碼

isNative

Check if value is a native function.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is a native function
isNative(function () {}); // -> false isNative(Math.min); // -> true 復制代碼

isNil

Check if value is null or undefined, the same as value == null.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is null or undefined
isNil(null); // -> true isNil(void 0); // -> true isNil(undefined); // -> true isNil(false); // -> false isNil(0); // -> false isNil([]); // -> false 復制代碼

isNode

Check if running in node.

console.log(isNode); // -> true if running in node 復制代碼

isNull

Check if value is an Null.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is an Null
isNull(null); // -> true 復制代碼

isNum

Check if value is classified as a Number primitive or object.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is correctly classified
isNum(5); // -> true isNum(5.1); // -> true isNum({}); // -> false 復制代碼

isNumeric

Check if value is numeric.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is numeric
isNumeric(1); // -> true isNumeric('1'); // -> true isNumeric(Number.MAX_VALUE); // -> true isNumeric(0144); // -> true isNumeric(0xFF); // -> true isNumeric(''); // -> false isNumeric('1.1.1'); // -> false isNumeric(NaN); // -> false 復制代碼

isObj

Check if value is the language type of Object.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is an object

Language Spec

isObj({}); // -> true isObj([]); // -> true 復制代碼

isOdd

Check if number is odd.

NameTypeDesc
numnumberNumber to check
returnbooleanTrue if number is odd
isOdd(0); // -> false isOdd(1); // -> true isOdd(2); // -> false 復制代碼

isPlainObj

Check if value is an object created by Object constructor.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is a plain object
isPlainObj({}); // -> true isPlainObj([]); // -> false isPlainObj(function () {}); // -> false 復制代碼

isPrimitive

Check if value is string, number, boolean or null.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is a primitive
isPrimitive(5); // -> true isPrimitive('abc'); // -> true isPrimitive(false); // -> true 復制代碼

isPromise

Check if value looks like a promise.

NameTypeDesc
val*Value to check
returnbooleanTrue if value looks like a promise
isPromise(new Promise(function () {})); // -> true isPromise({}); // -> false 復制代碼

isRegExp

Check if value is a regular expression.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is a regular expression
isRegExp(/a/); // -> true 復制代碼

isRelative

Check if path appears to be relative.

NameTypeDesc
pathstringPath to check
returnbooleanTrue if path appears to be relative
isRelative('README.md'); // -> true 復制代碼

isRetina

Determine if running on a high DPR device or not.

console.log(isRetina); // -> true if high DPR 復制代碼

isStr

Check if value is a string primitive.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is a string primitive
isStr('licia'); // -> true 復制代碼

isStream

Check if value is a Node.js stream.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is a Node.js stream
var stream = require('stream');isStream(new stream.Stream()); // -> true 復制代碼

isTypedArr

Check if value is a typed array.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is a typed array
isTypedArr([]); // -> false isTypedArr(new Unit8Array); // -> true 復制代碼

isUndef

Check if value is undefined.

NameTypeDesc
val*Value to check
returnbooleanTrue if value is undefined
isUndef(void 0); // -> true isUndef(null); // -> false 復制代碼

isUrl

Loosely validate an url.

NameTypeDesc
valstringValue to check
returnbooleanTrue if value is an url like string
isUrl('http://www.example.com?foo=bar&param=test'); // -> true 復制代碼

isWindows

Check if platform is windows.

console.log(isWindows); // -> true if running on windows 復制代碼

jsonp

A simple jsonp implementation.

NameTypeDesc
optsobjectJsonp Options

Available options:

NameTypeDesc
urlstringRequest url
dataobjectRequest data
successfunctionSuccess callback
param=callbackstringCallback param
namestringCallback name
errorfunctionError callback
completefunctionCallback after request
timeoutnumberRequest timeout
jsonp({url: 'http://example.com',data: {test: 'true'},success: function (data){// ...} }); 復制代碼

kebabCase

Convert string to "kebabCase".

NameTypeDesc
strstringString to convert
returnstringKebab cased string
kebabCase('fooBar'); // -> foo-bar kebabCase('foo bar'); // -> foo-bar kebabCase('foo_bar'); // -> foo-bar kebabCase('foo.bar'); // -> foo-bar 復制代碼

keyCode

Key codes and key names conversion.

Get key code's name.

NameTypeDesc
codenumberKey code
returnstringCorresponding key name

Get key name's code.

NameTypeDesc
namestringKey name
returnnumberCorresponding key code
keyCode(13); // -> 'enter' keyCode('enter'); // -> 13 復制代碼

keys

Create an array of the own enumerable property names of object.

NameTypeDesc
objobjectObject to query
returnarrayArray of property names
keys({a: 1}); // -> ['a'] 復制代碼

last

Get the last element of array.

NameTypeDesc
arrarrayThe array to query
return*The last element of array
last([1, 2]); // -> 2 復制代碼

lazyRequire

Require modules lazily.

var r = lazyRequire(require);var _ = r('underscore');// underscore is required only when _ is called. _().isNumber(5); 復制代碼

linkify

Hyperlink urls in a string.

NameTypeDesc
strstringString to hyperlink
[hyperlink]functionFunction to hyperlink url
returnstringResult string
var str = 'Official site: http://eustia.liriliri.io' linkify(str); // -> 'Official site: <a href="http://eustia.liriliri.io">http://eustia.liriliri.io</a>' linkify(str, function (url) {return '<a href="' + url + '" target="_blank">' + url + '</a>'; }); 復制代碼

loadCss

Inject link tag into page with given href value.

NameTypeDesc
srcstringStyle source
cbfunctionOnload callback
loadCss('style.css', function (isLoaded) {// Do something... }); 復制代碼

loadImg

Load image with given src.

NameTypeDesc
srcstringImage source
[cb]functionOnload callback
loadImg('http://eustia.liriliri.io/img.jpg', function (err, img) {console.log(img.width, img.height); }); 復制代碼

loadJs

Inject script tag into page with given src value.

NameTypeDesc
srcstringScript source
cbfunctionOnload callback
loadJs('main.js', function (isLoaded) {// Do something... }); 復制代碼

longest

Get the longest item in an array.

NameTypeDesc
arrarrayArray to inspect
return*Longest item
longest(['a', 'abcde', 'abc']); // -> 'abcde' 復制代碼

lowerCase

Convert string to lower case.

NameTypeDesc
strstringString to convert
returnstringLower cased string
lowerCase('TEST'); // -> 'test' 復制代碼

lpad

Pad string on the left side if it's shorter than length.

NameTypeDesc
strstringString to pad
lennumberPadding length
[chars]stringString used as padding
returnstringResulted string
lpad('a', 5); // -> ' a' lpad('a', 5, '-'); // -> '----a' lpad('abc', 3, '-'); // -> 'abc' lpad('abc', 5, 'ab'); // -> 'ababc' 復制代碼

ltrim

Remove chars or white-spaces from beginning of string.

NameTypeDesc
strstringString to trim
charsstring arrayCharacters to trim
returnstringTrimmed string
ltrim(' abc '); // -> 'abc ' ltrim('_abc_', '_'); // -> 'abc_' ltrim('_abc_', ['a', '_']); // -> 'bc_' 復制代碼

map

Create an array of values by running each element in collection through iteratee.

NameTypeDesc
objarray objectCollection to iterate over
iterateefunctionFunction invoked per iteration
[ctx]*Function context
returnarrayNew mapped array
map([4, 8], function (n) { return n * n; }); // -> [16, 64] 復制代碼

mapObj

Map for objects.

NameTypeDesc
objobjectObject to iterate over
iterateefunctionFunction invoked per iteration
[ctx]*Function context
returnobjectNew mapped object
mapObj({a: 1, b: 2}, function (val, key) { return val + 1 }); // -> {a: 2, b: 3} 復制代碼

matcher

Return a predicate function that checks if attrs are contained in an object.

NameTypeDesc
attrsobjectObject of property values to match
returnfunctionNew predicate function
var objects = [{a: 1, b: 2, c: 3 },{a: 4, b: 5, c: 6 } ]; filter(objects, matcher({a: 4, c: 6 })); // -> [{a: 4, b: 5, c: 6 }] 復制代碼

max

Get maximum value of given numbers.

NameTypeDesc
...numnumberNumbers to calculate
returnnumberMaximum value
max(2.3, 1, 4.5, 2); // 4.5 復制代碼

memStorage

Memory-backed implementation of the Web Storage API.

A replacement for environments where localStorage or sessionStorage is not available.

var localStorage = window.localStorage || memStorage; localStorage.setItem('test', 'licia'); 復制代碼

memoize

Memoize a given function by caching the computed result.

NameTypeDesc
fnfunctionFunction to have its output memoized
[hashFn]functionFunction to create cache key
returnfunctionNew memoized function
var fibonacci = memoize(function(n) {return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2); }); 復制代碼

meta

Document meta manipulation, turn name and content into key value pairs.

Get meta content with given name. If name is omitted, all pairs will be return.

NameTypeDesc
[name]string arrayMeta name
returnstringMeta content

Set meta content.

NameTypeDesc
namestringMeta name
contentstringMeta content
NameTypeDesc
metasobjectObject of name content pairs

remove

Remove metas.

NameTypeDesc
namestring arrayMeta name
// <meta name="a" content="1"/> <meta name="b" content="2"/> <meta name="c" content="3"/> meta(); // -> {a: '1', b: '2', c: '3'} meta('a'); // -> '1' meta(['a', 'c']); // -> {a: '1', c: '3'} meta('d', '4'); meta({d: '5',e: '6',f: '7' }); meta.remove('d'); meta.remove(['e', 'f']); 復制代碼

methods

Return a sorted list of the names of every method in an object.

NameTypeDesc
objobjectObject to check
returnarrayFunction names in object
methods(console); // -> ['Console', 'assert', 'dir', ...] 復制代碼

min

Get minimum value of given numbers.

NameTypeDesc
...numnumberNumbers to calculate
returnnumberMinimum value
min(2.3, 1, 4.5, 2); // 1 復制代碼

mkdir

Recursively create directories.

NameTypeDesc
dirstringDirectory to create
[mode=0777]numberDirectory mode
callbackfunctionCallback
mkdir('/tmp/foo/bar/baz', function (err) {if (err) console.log(err);else console.log('Done'); }); 復制代碼

moment

Tiny moment.js like implementation.

It only supports a subset of moment.js api.

Available methods

format, isValid, isLeapYear, isSame, isBefore, isAfter, year, month, date, hour, minute, second, millisecond, unix, clone, toDate, toArray, toJSON, toISOString, toObject, toString, set, startOf, endOf, add, subtract, diff

Not supported

locale and units like quarter and week.

Note: Format uses dateFormat module, so the mask is not quite the same as moment.js.

moment('20180501').format('yyyy-mm-dd'); // -> '2018-05-01' 復制代碼

ms

Convert time string formats to milliseconds.

Turn time string into milliseconds.

NameTypeDesc
strstringString format
returnnumberMilliseconds

Turn milliseconds into time string.

NameTypeDesc
numnumberMilliseconds
returnstringString format
ms('1s'); // -> 1000 ms('1m'); // -> 60000 ms('1.5h'); // -> 5400000 ms('1d'); // -> 86400000 ms('1y'); // -> 31557600000 ms('1000'); // -> 1000 ms(1500); // -> '1.5s' ms(60000); // -> '1m' 復制代碼

negate

Create a function that negates the result of the predicate function.

NameTypeDesc
predicatefunctionPredicate to negate
returnfunctionNew function
function even(n) { return n % 2 === 0 } filter([1, 2, 3, 4, 5, 6], negate(even)); // -> [1, 3, 5] 復制代碼

nextTick

Next tick for both node and browser.

NameTypeDesc
cbfunctionFunction to call

Use process.nextTick if available.

Otherwise setImmediate or setTimeout is used as fallback.

nextTick(function () {// Do something... }); 復制代碼

noop

A no-operation function.

noop(); // Does nothing 復制代碼

normalizePath

Normalize file path slashes.

NameTypeDesc
pathstringPath to normalize
returnstringNormalized path
normalizePath('\\foo\\bar\\'); // -> '/foo/bar/' normalizePath('./foo//bar'); // -> './foo/bar' 復制代碼

now

Gets the number of milliseconds that have elapsed since the Unix epoch.

now(); // -> 1468826678701 復制代碼

objToStr

Alias of Object.prototype.toString.

NameTypeDesc
value*Source value
returnstringString representation of given value
objToStr(5); // -> '[object Number]' 復制代碼

omit

Opposite of pick.

NameTypeDesc
objobjectSource object
filterstring array functionObject filter
returnobjectFiltered object
omit({a: 1, b: 2}, 'a'); // -> {b: 2} omit({a: 1, b: 2, c: 3}, ['b', 'c']) // -> {a: 1} omit({a: 1, b: 2, c: 3, d: 4}, function (val, key) {return val % 2; }); // -> {b: 2, d: 4}## once Create a function that invokes once.|Name |Type |Desc | |------|--------|-----------------------| |fn |function|Function to restrict | |return|function|New restricted function|```javascript function init() {}; var initOnce = once(init); initOnce(); initOnce(); // -> init is invoked once 復制代碼

optimizeCb

Used for function context binding.

orientation

Screen orientation helper.

on

Bind change event.

off

Unbind change event.

get

Get current orientation(landscape or portrait).

orientation.on('change', function (direction) {console.log(direction); // -> 'portrait' }); orientation.get(); // -> 'landscape' 復制代碼

pad

Pad string on the left and right sides if it's shorter than length.

NameTypeDesc
strstringString to pad
lennumberPadding length
charsstringString used as padding
returnstringResulted string
pad('a', 5); // -> ' a ' pad('a', 5, '-'); // -> '--a--' pad('abc', 3, '-'); // -> 'abc' pad('abc', 5, 'ab'); // -> 'babca' pad('ab', 5, 'ab'); // -> 'ababa' 復制代碼

pairs

Convert an object into a list of [key, value] pairs.

NameTypeDesc
objobjectObject to convert
returnarrayList of [key, value] pairs
pairs({a: 1, b: 2}); // -> [['a', 1], ['b', 2]] 復制代碼

parallel

Run an array of functions in parallel.

NameTypeDesc
tasksarrayArray of functions
[cb]functionCallback once completed
parallel([function(cb){setTimeout(function () { cb(null, 'one') }, 200);},function(cb){setTimeout(function () { cb(null, 'two') }, 100);} ], function (err, results) {// results -> ['one', 'two'] }); 復制代碼

parseArgs

Parse command line argument options, the same as minimist.

NameTypeDesc
argsarrayArgument array
optsobjectParse options
returnobjectParsed result

options

NameTypeDesc
namesobjectoption names
shorthandsobjectoption shorthands
parseArgs(['eustia', '--output', 'util.js', '-w'], {names: {output: 'string',watch: 'boolean'},shorthands: {output: 'o',watch: 'w'} }); // -> {remain: ['eustia'], output: 'util.js', watch: true} 復制代碼

partial

Partially apply a function by filling in given arguments.

NameTypeDesc
fnfunctionFunction to partially apply arguments to
...partials*Arguments to be partially applied
returnfunctionNew partially applied function
var sub5 = partial(function (a, b) { return b - a }, 5); sub(20); // -> 15 復制代碼

pascalCase

Convert string to "pascalCase".

NameTypeDesc
strstringString to convert
returnstringPascal cased string
pascalCase('fooBar'); // -> FooBar pascalCase('foo bar'); // -> FooBar pascalCase('foo_bar'); // -> FooBar pascalCase('foo.bar'); // -> FooBar 復制代碼

perfNow

High resolution time up to microsecond precision.

var start = perfNow();// Do something.console.log(perfNow() - start); 復制代碼

pick

Return a filtered copy of an object.

NameTypeDesc
objobjectSource object
filterstring array functionObject filter
returnobjectFiltered object
pick({a: 1, b: 2}, 'a'); // -> {a: 1} pick({a: 1, b: 2, c: 3}, ['b', 'c']) // -> {b: 2, c: 3} pick({a: 1, b: 2, c: 3, d: 4}, function (val, key) {return val % 2; }); // -> {a: 1, c: 3} 復制代碼

pluck

Extract a list of property values.

NameTypeDesc
objobject arrayCollection to iterate over
keystring arrayProperty path
returnarrayNew array of specified property
var stooges = [{name: 'moe', age: 40},{name: 'larry', age: 50},{name: 'curly', age: 60} ]; pluck(stooges, 'name'); // -> ['moe', 'larry', 'curly'] 復制代碼

precision

Find decimal precision of a given number.

NameTypeDesc
numnumberNumber to check
returnnumberPrecision
precision(1.234); // -> 3; 復制代碼

prefix

Add vendor prefixes to a CSS attribute.

NameTypeDesc
namestringProperty name
returnstringPrefixed property name

dash

Create a dasherize version.

prefix('text-emphasis'); // -> 'WebkitTextEmphasis' prefix.dash('text-emphasis'); // -> '-webkit-text-emphasis' prefix('color'); // -> 'color' 復制代碼

promisify

Convert callback based functions into Promises.

NameTypeDesc
fnfunctionCallback based function
[multiArgs=false]booleanIf callback has multiple success value
returnbooleanResult function

If multiArgs is set to true, the resulting promise will always fulfill with an array of the callback's success values.

var fs = require('fs');var readFile = promisify(fs.readFile); readFile('test.js', 'utf-8').then(function (data) {// Do something with file content. }); 復制代碼

property

Return a function that will itself return the key property of any passed-in object.

NameTypeDesc
pathstring arrayPath of the property to get
returnfunctionNew accessor function
var obj = {a: {b: 1}}; property('a')(obj); // -> {b: 1} property(['a', 'b'])(obj); // -> 1 復制代碼

query

Parse and stringify url query strings.

parse

Parse a query string into an object.

NameTypeDesc
strstringQuery string
returnobjectQuery object

stringify

Stringify an object into a query string.

NameTypeDesc
objobjectQuery object
returnstringQuery string
query.parse('foo=bar&eruda=true'); // -> {foo: 'bar', eruda: 'true'} query.stringify({foo: 'bar', eruda: 'true'}); // -> 'foo=bar&eruda=true' query.parse('name=eruda&name=eustia'); // -> {name: ['eruda', 'eustia']} 復制代碼

raf

Shortcut for requestAnimationFrame.

Use setTimeout if native requestAnimationFrame is not supported.

var id = raf(function tick() {// Animation stuffraf(tick); }); raf.cancel(id); 復制代碼

random

Produces a random number between min and max(inclusive).

NameTypeDesc
minnumberMinimum possible value
maxnumberMaximum possible value
[floating=false]booleanFloat or not
returnnumberRandom number
random(1, 5); // -> an integer between 0 and 5 random(5); // -> an integer between 0 and 5 random(1.2, 5.2, true); /// -> a floating-point number between 1.2 and 5.2 復制代碼

randomBytes

Random bytes generator.

Use crypto module in node or crypto object in browser if possible.

NameTypeDesc
sizenumberNumber of bytes to generate
returnobjectRandom bytes of given length
randomBytes(5); // -> [55, 49, 153, 30, 122] 復制代碼

range

Create flexibly-numbered lists of integers.

NameTypeDesc
[start]numberStart of the range
endnumberEnd of the range
step=1numberValue to increment or decrement by
range(5); // -> [0, 1, 2, 3, 4] range(0, 5, 2) // -> [0, 2, 4] 復制代碼

ready

Invoke callback when dom is ready, similar to jQuery ready.

NameTypeDesc
fnfunctionCallback function
ready(function () {// It's safe to manipulate dom here. }); 復制代碼

reduce

Turn a list of values into a single value.

NameTypeDesc
objobject arrayCollection to iterate over
[iteratee=identity]functionFunction invoked per iteration
[initial]*Initial value
[ctx]*Function context
return*Accumulated value
reduce([1, 2, 3], function (sum, n) { return sum + n }, 0); // -> 6 復制代碼

reduceRight

Right-associative version of reduce.

reduceRight([[1], [2], [3]], function (a, b) { return a.concat(b) }, []); // -> [3, 2, 1] 復制代碼

reject

Opposite of filter.

NameTypeDesc
objarrayCollection to iterate over
predicatefunctionFunction invoked per iteration
[ctx]*Predicate context
returnarrayArray of all values that pass predicate
reject([1, 2, 3, 4, 5], function (val) {return val % 2 === 0; }); // -> [1, 3, 5] 復制代碼

remove

Remove all elements from array that predicate returns truthy for and return an array of the removed elements.

Unlike filter, this method mutates array.

NameTypeDesc
objarrayCollection to iterate over
predicatefunctionFunction invoked per iteration
[ctx]*Predicate context
returnarrayArray of all values that are removed
var arr = [1, 2, 3, 4, 5]; var evens = remove(arr, function (val) { return val % 2 === 0 }); console.log(arr); // -> [1, 3, 5] console.log(evens); // -> [2, 4] 復制代碼

repeat

Repeat string n-times.

NameTypeDesc
strstringString to repeat
nnumberRepeat times
returnstringRepeated string
repeat('a', 3); // -> 'aaa' repeat('ab', 2); // -> 'abab' repeat('*', 0); // -> '' 復制代碼

restArgs

This accumulates the arguments passed into an array, after a given index.

NameTypeDesc
functionfunctionFunction that needs rest parameters
startIndexnumberThe start index to accumulates
returnfunctionGenerated function with rest parameters
var paramArr = restArgs(function (rest) { return rest }); paramArr(1, 2, 3, 4); // -> [1, 2, 3, 4] 復制代碼

rgbToHsl

Convert rgb to hsl.

NameTypeDesc
rgbarrayRgb values
returnarrayHsl values
rgbToHsl([52, 203, 165, 0.8]); // -> [165, 59, 50, 0.8] 復制代碼

rmCookie

Loop through all possible path and domain to remove cookie.

NameTypeDesc
keystringCookie key
rmCookie('test'); 復制代碼

rmdir

Recursively remove directories.

NameTypeDesc
dirstringDirectory to remove
callbackfunctionCallback
rmdir('/tmp/foo/bar/baz', function (err) {if (err) console.log (err);else console.log('Done'); }); 復制代碼

root

Root object reference, global in nodeJs, window in browser.

rpad

Pad string on the right side if it's shorter than length.

NameTypeDesc
strstringString to pad
lennumberPadding length
charsstringString used as padding
returnstringResulted string
rpad('a', 5); // -> 'a ' rpad('a', 5, '-'); // -> 'a----' rpad('abc', 3, '-'); // -> 'abc' rpad('abc', 5, 'ab'); // -> 'abcab' 復制代碼

rtrim

Remove chars or white-spaces from end of string.

NameTypeDesc
strstringString to trim
charsstring arrayCharacters to trim
returnstringTrimmed string
rtrim(' abc '); // -> ' abc' rtrim('_abc_', '_'); // -> '_abc' rtrim('_abc_', ['c', '_']); // -> '_ab' 復制代碼

safeCb

Create callback based on input value.

safeDel

Delete object property.

NameTypeDesc
objobjectObject to query
patharray stringPath of property to delete
return*Deleted value or undefined
var obj = {a: {aa: {aaa: 1}}}; safeDel(obj, 'a.aa.aaa'); // -> 1 safeDel(obj, ['a', 'aa']); // -> {} safeDel(obj, 'a.b'); // -> undefined 復制代碼

safeGet

Get object property, don't throw undefined error.

NameTypeDesc
objobjectObject to query
patharray stringPath of property to get
return*Target value or undefined
var obj = {a: {aa: {aaa: 1}}}; safeGet(obj, 'a.aa.aaa'); // -> 1 safeGet(obj, ['a', 'aa']); // -> {aaa: 1} safeGet(obj, 'a.b'); // -> undefined 復制代碼

safeSet

Set value at path of object.

If a portion of path doesn't exist, it's created.

NameTypeDesc
objobjectObject to modify
patharray stringPath of property to set
val*Value to set
var obj = {}; safeSet(obj, 'a.aa.aaa', 1); // obj = {a: {aa: {aaa: 1}}} safeSet(obj, ['a', 'aa'], 2); // obj = {a: {aa: 2}} safeSet(obj, 'a.b', 3); // obj = {a: {aa: 2, b: 3}} 復制代碼

safeStorage

Use storage safely in safari private browsing and older browsers.

NameTypeDesc
[type='local']stringlocal or session
returnobjectSpecified storage
var localStorage = safeStorage('local'); localStorage.setItem('licia', 'util'); 復制代碼

sample

Sample random values from a collection.

NameTypeDesc
objarray objectCollection to sample
nnumberNumber of values
returnarrayArray of sample values
sample([2, 3, 1], 2); // -> [2, 3] sample({a: 1, b: 2, c: 3}, 1); // -> [2] 復制代碼

scrollTo

Scroll to a target with animation.

NameTypeDesc
targetelement string numberScroll target
optionsobjectScroll options

Options

NameTypeDefaultDesc
tolerancenumber0Tolerance of target to scroll
durationnumber800Scroll duration
easingstring functionoutQuartEasing function
callbackfunctionnoopFunction to run once scrolling complete
scrollTo('body', {tolerance: 0,duration: 800,easing: 'outQuart',callback: function () {} }); 復制代碼

selectionSort

Selection sort implementation.

NameTypeDesc
arrarrayArray to sort
[cmp]functionComparator
selectionSort([2, 1]); // -> [1, 2] 復制代碼

shuffle

Randomize the order of the elements in a given array.

NameTypeDesc
arrarrayArray to randomize
returnarrayRandomized Array
shuffle([1, 2, 3]); // -> [3, 1, 2] 復制代碼

size

Get size of object, length of array like object or the number of keys.

NameTypeDesc
objarray objectCollection to inspect
returnnumberCollection size
size({a: 1, b: 2}); // -> 2 size([1, 2, 3]); // -> 3 復制代碼

slice

Create slice of source array or array-like object.

NameTypeDesc
arrayarrayArray to slice
[start=0]numberStart position
[end=array.length]numberEnd position, not included
slice([1, 2, 3, 4], 1, 2); // -> [2] 復制代碼

snakeCase

Convert string to "snakeCase".

NameTypeDesc
strstringString to convert
returnstringSnake cased string
snakeCase('fooBar'); // -> foo_bar snakeCase('foo bar'); // -> foo_bar snakeCase('foo.bar'); // -> foo_bar 復制代碼

some

Check if predicate return truthy for any element.

NameTypeDesc
objarray objectCollection to iterate over
predicatefunctionFunction to invoked per iteration
ctx*Predicate context
returnbooleanTrue if any element passes the predicate check
some([2, 5], function (val) {return val % 2 === 0; }); // -> true 復制代碼

spaceCase

Convert string to "spaceCase".

NameTypeDesc
strstringString to convert
returnstringSpace cased string
spaceCase('fooBar'); // -> foo bar spaceCase('foo.bar'); // -> foo bar spaceCase('foo.bar'); // -> foo bar 復制代碼

splitCase

Split different string case to an array.

NameTypeDesc
strstringString to split
returnarrayResult array
splitCase('foo-bar'); // -> ['foo', 'bar'] splitCase('foo bar'); // -> ['foo', 'bar'] splitCase('foo_bar'); // -> ['foo', 'bar'] splitCase('foo.bar'); // -> ['foo', 'bar'] splitCase('fooBar'); // -> ['foo', 'bar'] splitCase('foo-Bar'); // -> ['foo', 'bar'] 復制代碼

splitPath

Split path into device, dir, name and ext.

NameTypeDesc
pathstringPath to split
returnobjectObject containing dir, name and ext
splitPath('f:/foo/bar.txt'); // -> {dir: 'f:/foo/', name: 'bar.txt', ext: '.txt'} splitPath('/home/foo/bar.txt'); // -> {dir: '/home/foo/', name: 'bar.txt', ext: '.txt'} 復制代碼

startWith

Check if string starts with the given target string.

NameTypeDesc
strstringString to search
prefixstringString prefix
returnbooleanTrue if string starts with prefix
startWith('ab', 'a'); // -> true 復制代碼

strHash

String hash function using djb2.

NameTypeDesc
strstringString to hash
returnnumberHash result
strHash('test'); // -> 2090770981 復制代碼

stringify

JSON stringify with support for circular object, function etc.

Undefined is treated as null value.

NameTypeDesc
objobjectObject to stringify
spacesnumberIndent spaces
returnstringStringified object
stringify({a: function () {}}); // -> '{"a":"[Function function () {}]"}' var obj = {a: 1}; obj.b = obj; stringify(obj); // -> '{"a":1,"b":"[Circular ~]"}' 復制代碼

stripAnsi

Strip ansi codes from a string.

NameTypeDesc
strstringString to strip
returnstringResulted string
stripAnsi('\u001b[4mcake\u001b[0m'); // -> 'cake' 復制代碼

stripCmt

Strip comments from source code.

NameTypeDesc
strstringSource code
returnstringCode without comments
stripCmts('// comment \n var a = 5; /* comment2\n * comment3\n *\/'); // -> ' var a = 5; ' 復制代碼

stripColor

Strip ansi color codes from a string.

NameTypeDesc
strstringString to strip
returnstringResulted string
stripColor('\u001b[31mred\u001b[39m'); // -> 'red' 復制代碼

stripHtmlTag

Strip html tags from a string.

NameTypeDesc
strstringString to strip
returnstringResulted string
stripHtmlTag('<p>Hello</p>'); // -> 'Hello' 復制代碼

sum

Compute sum of given numbers.

NameTypeDesc
...numnumberNumbers to calculate
returnnumberSum of numbers
sum(1, 2, 5); // -> 8 復制代碼

template

Compile JavaScript template into function that can be evaluated for rendering.

NameTypeString
strstringTemplate string
returnfunctionCompiled template function
template('Hello <%= name %>!')({name: 'licia'}); // -> 'Hello licia!' template('<p><%- name %></p>')({name: '<licia>'}); // -> '<p>&lt;licia&gt;</p>' template('<%if (echo) {%>Hello licia!<%}%>')({echo: true}); // -> 'Hello licia!' 復制代碼

throttle

Return a new throttled version of the passed function.

NameTypeDesc
fnfunctionFunction to throttle
waitnumberNumber of milliseconds to delay
returnfunctionNew throttled function
$(window).scroll(throttle(updatePos, 100)); 復制代碼

through

Tiny wrapper of stream Transform.

NameTypeDesc
[opts={}]ObjectOptions to initialize stream
transformfunctionTransform implementation
[flush]functionFlush implementation

obj

Shortcut for setting objectMode to true.

ctor

Return a class that extends stream Transform.

fs.createReadStream('in.txt').pipe(through(function (chunk, enc, cb){// Do something to chunkthis.push(chunk);cb();})).pipe(fs.createWriteStream('out.txt')); 復制代碼

timeAgo

Format datetime with *** time ago statement.

NameTypeDesc
dateDateDate to calculate
[now=new Date]DateCurrent date
returnstringFormatted time ago string
var now = new Date().getTime(); timeAgo(now - 1000 * 6); // -> right now timeAgo(now + 1000 * 15); // -> in 15 minutes timeAgo(now - 1000 * 60 * 60 * 5, now); // -> 5 hours ago 復制代碼

timeTaken

Get execution time of a function.

NameTypeDesc
fnfunctionFunction to measure time
returnnumberExecution time, ms
timeTaken(function () {// Do something. }); // -> Time taken to execute given function. 復制代碼

toArr

Convert value to an array.

NameTypeDesc
val*Value to convert
returnarrayConverted array
toArr({a: 1, b: 2}); // -> [{a: 1, b: 2}] toArr('abc'); // -> ['abc'] toArr(1); // -> [1] toArr(null); // -> [] 復制代碼

toBool

Convert value to a boolean.

NameTypeDesc
val*Value to convert
returnbooleanConverted boolean
toBool(true); // -> true toBool(null); // -> false toBool(1); // -> true toBool(0); // -> false toBool('0'); // -> false toBool('1'); // -> true toBool('false'); // -> false 復制代碼

toDate

Convert value to a Date.

NameTypeDesc
val*Value to convert
returnDateConverted Date
toDate('20180501'); toDate('2018-05-01'); toDate(1525107450849); 復制代碼

toEl

Convert html string to dom elements.

There should be only one root element.

NameTypeDesc
strstringHtml string
returnelementHtml element
toEl('<div>test</div>'); 復制代碼

toInt

Convert value to an integer.

NameTypeDesc
val*Value to convert
returnnumberConverted integer
toInt(1.1); // -> 1 toInt(undefined); // -> 0 復制代碼

toNum

Convert value to a number.

NameTypeDesc
val*Value to process
returnnumberResulted number
toNum('5'); // -> 5 復制代碼

toSrc

Convert function to its source code.

NameTypeDesc
fnfunctionFunction to convert
returnstringSource code
toSrc(Math.min); // -> 'function min() { [native code] }' toSrc(function () {}) // -> 'function () { }' 復制代碼

toStr

Convert value to a string.

NameTypeDesc
val*Value to convert
returnstringResulted string
toStr(null); // -> '' toStr(1); // -> '1' toStr(false); // -> 'false' toStr([1, 2, 3]); // -> '1,2,3' 復制代碼

topoSort

Topological sorting algorithm.

NameTypeDesc
edgesarrayDependencies
returnarraySorted order
topoSort([[1, 2], [1, 3], [3, 2]]); // -> [1, 3, 2] 復制代碼

trigger

Trigger browser events.

NameTypeDesc
[el=document]elementElement to trigger
typestringEvent type
optsobjectOptions
trigger(el, 'mouseup'); trigger('keydown', {keyCode: 65}); 復制代碼

trim

Remove chars or white-spaces from beginning end of string.

NameTypeDesc
strstringString to trim
charsstring arrayCharacters to trim
returnstringTrimmed string
trim(' abc '); // -> 'abc' trim('_abc_', '_'); // -> 'abc' trim('_abc_', ['a', 'c', '_']); // -> 'b' 復制代碼

tryIt

Run function in a try catch.

NameTypeDesc
fnfunctionFunction to try catch
[cb]functionCallback
tryIt(function () {// Do something that might cause an error. }, function (err, result) {if (err) console.log(err); }); 復制代碼

type

Determine the internal JavaScript [[Class]] of an object.

NameTypeDesc
val*Value to get type
returnstringType of object, lowercased
type(5); // -> 'number' type({}); // -> 'object' type(function () {}); // -> 'function' type([]); // -> 'array' 復制代碼

ucs2

UCS-2 encoding and decoding.

encode

Create a string using an array of code point values.

NameTypeDesc
arrarrayArray of code points
returnstringEncoded string

decode

Create an array of code point values using a string.

NameTypeDesc
strstringInput string
returnarrayArray of code points
ucs2.encode([0x61, 0x62, 0x63]); // -> 'abc' ucs2.decode('abc'); // -> [0x61, 0x62, 0x63] '?'.length; // -> 2 ucs2.decode('?').length; // -> 1 復制代碼

unescape

Convert HTML entities back, the inverse of escape.

NameTypeDesc
strstringString to unescape
returnstringunescaped string
unescape('You &amp; Me'); -> // -> 'You & Me' 復制代碼

union

Create an array of unique values, in order, from all given arrays.

NameTypeDesc
...arrarrayArrays to inspect
returnarrayNew array of combined values
union([2, 1], [4, 2], [1, 2]); // -> [2, 1, 4] 復制代碼

uniqId

Generate a globally-unique id.

NameTypeDesc
prefixstringId prefix
returnstringGlobally-unique id
uniqId('eusita_'); // -> 'eustia_xxx' 復制代碼

unique

Create duplicate-free version of an array.

NameTypeDesc
arrarrayArray to inspect
[compare]functionFunction for comparing values
returnarrayNew duplicate free array
unique([1, 2, 3, 1]); // -> [1, 2, 3] 復制代碼

unzip

Opposite of zip.

NameTypeDesc
arrarrayArray of grouped elements to process
returnarrayNew array of regrouped elements
unzip([['a', 1, true], ['b', 2, false]]); // -> [['a', 'b'], [1, 2], [true, false]] 復制代碼

upperCase

Convert string to upper case.

NameTypeDesc
strstringString to convert
returnstringUppercased string
upperCase('test'); // -> 'TEST' 復制代碼

upperFirst

Convert the first character of string to upper case.

NameTypeDesc
strstringString to convert
returnstringConverted string
upperFirst('red'); // -> Red 復制代碼

use

Use modules that is created by define.

NameTypeDesc
[requires]arrayDependencies
methodfunctionCodes to be executed
define('A', function () {return 'A'; }); use(['A'], function (A) {console.log(A + 'B'); // -> 'AB' }); 復制代碼

utf8

UTF-8 encoding and decoding.

encode

Turn any UTF-8 decoded string into UTF-8 encoded string.

NameTypeDesc
strstringString to encode
returnstringEncoded string

decode

NameTypeDesc
strstringString to decode
[safe=false]booleanSuppress error if true
returnstringDecoded string

Turn any UTF-8 encoded string into UTF-8 decoded string.

utf8.encode('\uD800\uDC00'); // -> '\xF0\x90\x80\x80' utf8.decode('\xF0\x90\x80\x80'); // -> '\uD800\uDC00' 復制代碼

uuid

RFC4122 version 4 compliant uuid generator.

Check RFC4122 4.4 for reference.

uuid(); // -> '53ce0497-6554-49e9-8d79-347406d2a88b' 復制代碼

values

Create an array of the own enumerable property values of object.

NameTypeDesc
objobjectObject to query
returnarrayArray of property values
values({one: 1, two: 2}); // -> [1, 2] 復制代碼

viewportScale

Get viewport scale.

viewportScale(); // -> 3 復制代碼

waterfall

Run an array of functions in series.

NameTypeDesc
tasksarrayArray of functions
[cb]functionCallback once completed
waterfall([function (cb){cb(null, 'one');},function (arg1, cb){// arg1 -> 'one'cb(null, 'done');} ], function (err, result) {// result -> 'done' }); 復制代碼

workerize

Move a stand-alone function to a worker thread.

NameTypeDesc
fnfunctionFunction to turn
returnfunctionWorkerized Function
workerize(function (a, b) {return a + b; }); workerize(1, 2).then(function (value) {console.log(value); // -> 3 }); 復制代碼

wrap

Wrap the function inside a wrapper function, passing it as the first argument.

NameTypeDesc
fn*Function to wrap
wrapperfunctionWrapper function
returnfunctionNew function
var p = wrap(escape, function(fn, text) {return '<p>' + fn(text) + '</p>'; }); p('You & Me'); // -> '<p>You &amp; Me</p>' 復制代碼

zip

Merge together the values of each of the arrays with the values at the corresponding position.

NameTypeDesc
*arrarrayArrays to process
returnarrayNew array of grouped elements
zip(['a', 'b'], [1, 2], [true, false]); // -> [['a', 1, true], ['b', 2, false]] 復制代碼

轉載于:https://juejin.im/post/5af04752f265da0b873a6e6a

總結

以上是生活随笔為你收集整理的Licia:最全最实用的 JavaScript 工具库的全部內容,希望文章能夠幫你解決所遇到的問題。

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

国产精品久久国产三级国 | 亚洲精品一区二区三区四区五区 | 午夜福利试看120秒体验区 | 国产凸凹视频一区二区 | 无码午夜成人1000部免费视频 | 久久久久se色偷偷亚洲精品av | 爽爽影院免费观看 | 最新版天堂资源中文官网 | 小sao货水好多真紧h无码视频 | 国产成人无码专区 | 久久久精品国产sm最大网站 | aa片在线观看视频在线播放 | 牲交欧美兽交欧美 | 久久精品中文闷骚内射 | 国产人成高清在线视频99最全资源 | 久青草影院在线观看国产 | 亚洲 日韩 欧美 成人 在线观看 | 亚洲男女内射在线播放 | 一区二区三区乱码在线 | 欧洲 | 国产熟女一区二区三区四区五区 | 免费视频欧美无人区码 | 国产成人精品优优av | 无码精品国产va在线观看dvd | 日韩 欧美 动漫 国产 制服 | 人人妻人人澡人人爽欧美一区九九 | 日韩亚洲欧美中文高清在线 | 最新国产乱人伦偷精品免费网站 | 亚洲色欲久久久综合网东京热 | 国产suv精品一区二区五 | 国产香蕉97碰碰久久人人 | 国内精品人妻无码久久久影院 | 国产成人无码a区在线观看视频app | 免费无码av一区二区 | 亚洲精品一区二区三区婷婷月 | 精品国产福利一区二区 | 亚洲精品中文字幕久久久久 | 天天躁夜夜躁狠狠是什么心态 | 男女作爱免费网站 | 亚洲国产精品一区二区美利坚 | 亚洲一区二区三区国产精华液 | 狠狠cao日日穞夜夜穞av | 中文字幕日产无线码一区 | 亚洲精品综合一区二区三区在线 | 天堂а√在线地址中文在线 | 99久久亚洲精品无码毛片 | 久久久亚洲欧洲日产国码αv | 老太婆性杂交欧美肥老太 | 97夜夜澡人人爽人人喊中国片 | 午夜精品久久久内射近拍高清 | 精品日本一区二区三区在线观看 | 性欧美videos高清精品 | 国产精品igao视频网 | 一本色道婷婷久久欧美 | 免费国产成人高清在线观看网站 | 国产高清不卡无码视频 | 婷婷丁香六月激情综合啪 | 九九综合va免费看 | www国产亚洲精品久久久日本 | 青春草在线视频免费观看 | 国产成人精品必看 | 欧美第一黄网免费网站 | 无码人妻精品一区二区三区下载 | 久久综合狠狠综合久久综合88 | 国产亚洲精品久久久闺蜜 | 97久久国产亚洲精品超碰热 | 精品无码一区二区三区爱欲 | 人妻人人添人妻人人爱 | 天堂а√在线地址中文在线 | 国产三级久久久精品麻豆三级 | 色欲久久久天天天综合网精品 | 精品厕所偷拍各类美女tp嘘嘘 | 色狠狠av一区二区三区 | 国产成人精品无码播放 | 免费无码av一区二区 | 成人试看120秒体验区 | 性欧美videos高清精品 | 亚洲性无码av中文字幕 | 乌克兰少妇性做爰 | 午夜精品久久久久久久久 | 青草视频在线播放 | 精品国产麻豆免费人成网站 | 国产精品无码成人午夜电影 | 四虎国产精品免费久久 | 天堂久久天堂av色综合 | 精品成人av一区二区三区 | 夫妻免费无码v看片 | 六月丁香婷婷色狠狠久久 | 国产偷国产偷精品高清尤物 | 国产女主播喷水视频在线观看 | 国产又爽又猛又粗的视频a片 | 亚洲国产日韩a在线播放 | 动漫av一区二区在线观看 | 亚洲精品成a人在线观看 | 少妇太爽了在线观看 | 久久zyz资源站无码中文动漫 | 亚洲成av人片天堂网无码】 | 国产乱人无码伦av在线a | 中文字幕乱妇无码av在线 | 天干天干啦夜天干天2017 | 一个人看的视频www在线 | 国产成人无码a区在线观看视频app | 性啪啪chinese东北女人 | 国产成人无码a区在线观看视频app | 亚洲小说图区综合在线 | 在线精品国产一区二区三区 | 日韩亚洲欧美中文高清在线 | 成人一区二区免费视频 | 午夜性刺激在线视频免费 | 久久精品国产99精品亚洲 | 少妇性俱乐部纵欲狂欢电影 | 人妻体内射精一区二区三四 | 国产在线一区二区三区四区五区 | 亚洲国产av精品一区二区蜜芽 | 久久国产精品_国产精品 | 精品一区二区三区波多野结衣 | 99麻豆久久久国产精品免费 | 一本加勒比波多野结衣 | 国产激情综合五月久久 | 亚洲午夜福利在线观看 | 亚洲乱亚洲乱妇50p | 欧美变态另类xxxx | 国产手机在线αⅴ片无码观看 | 在线观看国产一区二区三区 | 国产成人av免费观看 | 国内精品一区二区三区不卡 | 欧洲vodafone精品性 | 国产一区二区三区影院 | 99麻豆久久久国产精品免费 | 最新国产乱人伦偷精品免费网站 | 欧美性猛交xxxx富婆 | 日本护士毛茸茸高潮 | 亚洲精品国产精品乱码不卡 | 蜜桃av抽搐高潮一区二区 | 亚洲日韩av一区二区三区中文 | 欧美野外疯狂做受xxxx高潮 | 天天拍夜夜添久久精品大 | v一区无码内射国产 | 久久久久成人精品免费播放动漫 | 天海翼激烈高潮到腰振不止 | 精品无码一区二区三区爱欲 | 黑人大群体交免费视频 | 综合网日日天干夜夜久久 | 午夜精品久久久久久久久 | 1000部啪啪未满十八勿入下载 | 欧美性猛交xxxx富婆 | 丁香花在线影院观看在线播放 | 最新国产麻豆aⅴ精品无码 | 国产精华av午夜在线观看 | 18无码粉嫩小泬无套在线观看 | 国产人妖乱国产精品人妖 | 成人综合网亚洲伊人 | 色诱久久久久综合网ywww | 最近免费中文字幕中文高清百度 | 精品无码国产自产拍在线观看蜜 | 精品一区二区三区无码免费视频 | 日日摸天天摸爽爽狠狠97 | 成 人 网 站国产免费观看 | 在线精品国产一区二区三区 | 精品国产一区二区三区四区在线看 | 午夜肉伦伦影院 | 亚洲自偷自偷在线制服 | 乱码午夜-极国产极内射 | 日日躁夜夜躁狠狠躁 | 一本久久a久久精品vr综合 | 日韩少妇内射免费播放 | 久久午夜无码鲁丝片 | 狠狠综合久久久久综合网 | av在线亚洲欧洲日产一区二区 | 色综合久久久久综合一本到桃花网 | 精品成在人线av无码免费看 | 99精品无人区乱码1区2区3区 | 日日碰狠狠丁香久燥 | 国产农村妇女高潮大叫 | 理论片87福利理论电影 | 樱花草在线播放免费中文 | 最新国产乱人伦偷精品免费网站 | 日韩精品无码一本二本三本色 | 亚洲一区二区三区国产精华液 | 国产欧美精品一区二区三区 | 一本久道久久综合狠狠爱 | 99久久精品国产一区二区蜜芽 | 色婷婷欧美在线播放内射 | 国产成人一区二区三区在线观看 | 中文字幕日产无线码一区 | 欧美高清在线精品一区 | 男女爱爱好爽视频免费看 | 性欧美videos高清精品 | 少妇被黑人到高潮喷出白浆 | 久久精品国产大片免费观看 | 一本精品99久久精品77 | 又大又硬又黄的免费视频 | 欧美35页视频在线观看 | 午夜肉伦伦影院 | 成人av无码一区二区三区 | 鲁大师影院在线观看 | 亚洲小说图区综合在线 | 国产疯狂伦交大片 | 精品人妻人人做人人爽夜夜爽 | 亚洲国产一区二区三区在线观看 | 国产午夜精品一区二区三区嫩草 | 鲁大师影院在线观看 | 日本在线高清不卡免费播放 | 成人免费视频一区二区 | 欧美日韩久久久精品a片 | 在线天堂新版最新版在线8 | 乱人伦中文视频在线观看 | 亚洲乱码国产乱码精品精 | 又大又紧又粉嫩18p少妇 | 蜜桃臀无码内射一区二区三区 | 天天综合网天天综合色 | 激情五月综合色婷婷一区二区 | 精品无码av一区二区三区 | 国产免费久久久久久无码 | 伊在人天堂亚洲香蕉精品区 | 蜜桃臀无码内射一区二区三区 | 一本大道久久东京热无码av | 丰满人妻被黑人猛烈进入 | 丰满少妇高潮惨叫视频 | 正在播放东北夫妻内射 | 精品人妻人人做人人爽夜夜爽 | 亚洲精品午夜国产va久久成人 | 亚洲中文字幕在线无码一区二区 | 真人与拘做受免费视频 | 久久婷婷五月综合色国产香蕉 | 性啪啪chinese东北女人 | 欧美人与禽zoz0性伦交 | 亚洲熟妇色xxxxx欧美老妇y | 无码一区二区三区在线 | 日日噜噜噜噜夜夜爽亚洲精品 | 高清不卡一区二区三区 | 日本精品少妇一区二区三区 | 精品无码成人片一区二区98 | 少妇性l交大片 | 久久久av男人的天堂 | 丰满少妇人妻久久久久久 | 曰本女人与公拘交酡免费视频 | 正在播放老肥熟妇露脸 | 四虎4hu永久免费 | 国产精品无码一区二区桃花视频 | 亚洲中文字幕在线无码一区二区 | 精品人妻人人做人人爽夜夜爽 | 中文字幕中文有码在线 | 男人的天堂av网站 | 成人亚洲精品久久久久 | 亚洲第一无码av无码专区 | a在线观看免费网站大全 | 中文久久乱码一区二区 | 久久久av男人的天堂 | 任你躁国产自任一区二区三区 | 1000部啪啪未满十八勿入下载 | 双乳奶水饱满少妇呻吟 | 日本乱偷人妻中文字幕 | 国产精品亚洲综合色区韩国 | 18无码粉嫩小泬无套在线观看 | 久久无码中文字幕免费影院蜜桃 | 97夜夜澡人人爽人人喊中国片 | 久热国产vs视频在线观看 | 国产精品欧美成人 | 精品熟女少妇av免费观看 | 色综合久久中文娱乐网 | 国产麻豆精品精东影业av网站 | 无码人妻久久一区二区三区不卡 | 丁香啪啪综合成人亚洲 | 亚洲一区二区三区香蕉 | v一区无码内射国产 | 亚洲精品成人福利网站 | 亚洲色偷偷男人的天堂 | 国产精品无码一区二区三区不卡 | 精品国产成人一区二区三区 | 精品少妇爆乳无码av无码专区 | 久久婷婷五月综合色国产香蕉 | 丰满诱人的人妻3 | 亚洲熟妇色xxxxx欧美老妇y | 97色伦图片97综合影院 | 婷婷五月综合缴情在线视频 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 丰满妇女强制高潮18xxxx | 日日躁夜夜躁狠狠躁 | 国产精品爱久久久久久久 | 玩弄人妻少妇500系列视频 | 亚洲精品一区二区三区婷婷月 | 亚洲天堂2017无码中文 | 日日橹狠狠爱欧美视频 | 久久无码专区国产精品s | 亚洲自偷精品视频自拍 | 国产真实乱对白精彩久久 | 亚洲日韩一区二区 | 欧美日韩久久久精品a片 | 亚洲爆乳大丰满无码专区 | 国产人妖乱国产精品人妖 | 久久久久亚洲精品男人的天堂 | 亚洲综合伊人久久大杳蕉 | 精品国精品国产自在久国产87 | 人人妻人人澡人人爽人人精品浪潮 | 水蜜桃亚洲一二三四在线 | 亚洲自偷精品视频自拍 | 一本久久伊人热热精品中文字幕 | 亚洲精品一区三区三区在线观看 | 中文字幕人妻无码一区二区三区 | 人妻aⅴ无码一区二区三区 | 久久婷婷五月综合色国产香蕉 | 沈阳熟女露脸对白视频 | 漂亮人妻洗澡被公强 日日躁 | 日本乱偷人妻中文字幕 | 久久97精品久久久久久久不卡 | 两性色午夜免费视频 | 人妻少妇被猛烈进入中文字幕 | 日本爽爽爽爽爽爽在线观看免 | 国产办公室秘书无码精品99 | 久久综合狠狠综合久久综合88 | 无码人妻久久一区二区三区不卡 | 久热国产vs视频在线观看 | 国产精品美女久久久网av | 亚洲人交乣女bbw | 国产成人综合在线女婷五月99播放 | 18精品久久久无码午夜福利 | 国产精品99爱免费视频 | 秋霞成人午夜鲁丝一区二区三区 | www成人国产高清内射 | 天天燥日日燥 | 妺妺窝人体色www婷婷 | 亚洲精品午夜无码电影网 | 精品久久久久香蕉网 | 天下第一社区视频www日本 | 性色欲网站人妻丰满中文久久不卡 | 亚洲精品综合五月久久小说 | 国内精品人妻无码久久久影院蜜桃 | 精品无码av一区二区三区 | 东京一本一道一二三区 | 男人和女人高潮免费网站 | 99久久精品日本一区二区免费 | 日日鲁鲁鲁夜夜爽爽狠狠 | 久久午夜夜伦鲁鲁片无码免费 | 久久无码人妻影院 | 动漫av一区二区在线观看 | 久久五月精品中文字幕 | 少妇无套内谢久久久久 | 九九久久精品国产免费看小说 | 亚洲狠狠色丁香婷婷综合 | 红桃av一区二区三区在线无码av | 国产一区二区三区四区五区加勒比 | √天堂中文官网8在线 | 中文字幕无线码 | 无码国内精品人妻少妇 | 无遮挡国产高潮视频免费观看 | 在线成人www免费观看视频 | 装睡被陌生人摸出水好爽 | 久久久中文久久久无码 | 狠狠躁日日躁夜夜躁2020 | 欧美老妇与禽交 | 亚洲欧洲中文日韩av乱码 | 无码国内精品人妻少妇 | 一本无码人妻在中文字幕免费 | 亚洲国产精品久久久久久 | 少女韩国电视剧在线观看完整 | 麻豆av传媒蜜桃天美传媒 | 中文精品久久久久人妻不卡 | 亚洲人成影院在线无码按摩店 | 国产成人久久精品流白浆 | 国产人成高清在线视频99最全资源 | 亚洲一区二区三区国产精华液 | 欧美精品在线观看 | 免费无码肉片在线观看 | 久久99精品久久久久久 | 51国偷自产一区二区三区 | 无人区乱码一区二区三区 | 午夜肉伦伦影院 | 亚洲狠狠婷婷综合久久 | 成人免费无码大片a毛片 | 国产亚洲精品久久久久久久 | 国产成人一区二区三区在线观看 | 香蕉久久久久久av成人 | 欧美精品无码一区二区三区 | 大色综合色综合网站 | 色综合久久久无码中文字幕 | 熟女俱乐部五十路六十路av | 国产九九九九九九九a片 | 欧美变态另类xxxx | 亚洲国产av美女网站 | 国产午夜无码精品免费看 | 一本一道久久综合久久 | 天干天干啦夜天干天2017 | 欧美精品一区二区精品久久 | 又大又硬又爽免费视频 | 性欧美疯狂xxxxbbbb | 免费无码的av片在线观看 | 日韩精品无码一本二本三本色 | 人妻少妇被猛烈进入中文字幕 | 丝袜美腿亚洲一区二区 | 欧美猛少妇色xxxxx | 久久无码中文字幕免费影院蜜桃 | 国产69精品久久久久app下载 | 国产成人一区二区三区别 | 国产精品亚洲五月天高清 | 特大黑人娇小亚洲女 | 日本熟妇浓毛 | 国产精品久久久久无码av色戒 | 国产免费无码一区二区视频 | 无码精品国产va在线观看dvd | 久久精品国产99久久6动漫 | 乌克兰少妇xxxx做受 | 免费网站看v片在线18禁无码 | 亚洲 a v无 码免 费 成 人 a v | 极品尤物被啪到呻吟喷水 | 窝窝午夜理论片影院 | 亚洲成av人在线观看网址 | 国产精品自产拍在线观看 | 性色欲网站人妻丰满中文久久不卡 | 亚洲小说春色综合另类 | 日日摸天天摸爽爽狠狠97 | www国产亚洲精品久久久日本 | 特黄特色大片免费播放器图片 | 欧美国产日产一区二区 | 无码成人精品区在线观看 | 熟女少妇人妻中文字幕 | 99riav国产精品视频 | 国产欧美亚洲精品a | 日本xxxx色视频在线观看免费 | 亚洲aⅴ无码成人网站国产app | 东京一本一道一二三区 | 国产精品美女久久久久av爽李琼 | 亚洲男人av香蕉爽爽爽爽 | 国产成人人人97超碰超爽8 | 日本熟妇浓毛 | √天堂资源地址中文在线 | 日韩av无码一区二区三区 | 欧美日韩精品 | 国产人妻精品午夜福利免费 | 国产成人精品必看 | 精品国产aⅴ无码一区二区 | 中文字幕乱妇无码av在线 | 任你躁在线精品免费 | 欧洲vodafone精品性 | 人妻人人添人妻人人爱 | 在线观看国产午夜福利片 | 亚洲春色在线视频 | 亚洲一区二区三区播放 | 亚洲a无码综合a国产av中文 | 亚洲人成无码网www | 国产九九九九九九九a片 | 国产一区二区三区精品视频 | 国产午夜无码视频在线观看 | 中文字幕乱妇无码av在线 | 中文字幕av日韩精品一区二区 | 精品国产aⅴ无码一区二区 | 动漫av一区二区在线观看 | 国产精品手机免费 | 国产精品无码一区二区三区不卡 | 精品亚洲韩国一区二区三区 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲乱码国产乱码精品精 | 久久99精品久久久久久 | 99er热精品视频 | 亚洲人成人无码网www国产 | 亚洲一区二区三区国产精华液 | 无码福利日韩神码福利片 | 日本爽爽爽爽爽爽在线观看免 | 精品国产麻豆免费人成网站 | 亚洲第一无码av无码专区 | 久久97精品久久久久久久不卡 | 亚洲成在人网站无码天堂 | 无码人妻黑人中文字幕 | 正在播放老肥熟妇露脸 | 色欲综合久久中文字幕网 | 日产国产精品亚洲系列 | 人妻天天爽夜夜爽一区二区 | 蜜桃臀无码内射一区二区三区 | 任你躁国产自任一区二区三区 | 2019午夜福利不卡片在线 | 全球成人中文在线 | 欧洲欧美人成视频在线 | 亚洲精品久久久久久久久久久 | 玩弄人妻少妇500系列视频 | 成人无码精品1区2区3区免费看 | 欧美性猛交xxxx富婆 | 久久久久久九九精品久 | 18禁黄网站男男禁片免费观看 | 久久国产精品精品国产色婷婷 | 少妇无码一区二区二三区 | 亚洲成a人片在线观看无码3d | 在线播放无码字幕亚洲 | 国产亚洲精品久久久ai换 | 中文字幕人妻无码一区二区三区 | 熟妇人妻无码xxx视频 | 欧美刺激性大交 | 蜜桃视频插满18在线观看 | 永久免费观看美女裸体的网站 | 日本一本二本三区免费 | 最近中文2019字幕第二页 | 欧美激情一区二区三区成人 | 色一情一乱一伦一视频免费看 | 老司机亚洲精品影院 | 成人亚洲精品久久久久软件 | 国产av无码专区亚洲awww | 男女猛烈xx00免费视频试看 | 成年美女黄网站色大免费视频 | 免费中文字幕日韩欧美 | 麻豆av传媒蜜桃天美传媒 | 亚洲午夜无码久久 | 丁香啪啪综合成人亚洲 | 好屌草这里只有精品 | 亚洲 高清 成人 动漫 | 国产亚洲精品久久久久久久久动漫 | 色一情一乱一伦 | 人人妻人人澡人人爽欧美一区 | 亚洲无人区午夜福利码高清完整版 | 欧美 日韩 亚洲 在线 | 亚洲精品一区二区三区在线观看 | 久久久无码中文字幕久... | 国产人妻久久精品二区三区老狼 | 亚洲综合无码一区二区三区 | 奇米影视7777久久精品人人爽 | 国产激情一区二区三区 | 丁香花在线影院观看在线播放 | 欧洲精品码一区二区三区免费看 | 亚洲精品久久久久中文第一幕 | 色婷婷久久一区二区三区麻豆 | 精品国产一区二区三区四区在线看 | 九九综合va免费看 | 国产精品无码一区二区三区不卡 | 国产av无码专区亚洲a∨毛片 | 婷婷色婷婷开心五月四房播播 | 国内精品久久毛片一区二区 | 久久国产精品二国产精品 | 精品无码一区二区三区的天堂 | 国产亚洲精品久久久闺蜜 | 亚洲成在人网站无码天堂 | 人妻熟女一区 | 欧洲美熟女乱又伦 | 国产偷抇久久精品a片69 | 午夜精品久久久内射近拍高清 | 性史性农村dvd毛片 | 免费乱码人妻系列无码专区 | 任你躁国产自任一区二区三区 | 欧美成人免费全部网站 | 亚洲精品www久久久 | 久久五月精品中文字幕 | 中文字幕无码av激情不卡 | 亚洲а∨天堂久久精品2021 | 精品久久久久久人妻无码中文字幕 | 兔费看少妇性l交大片免费 | 亚洲啪av永久无码精品放毛片 | 99久久无码一区人妻 | 乱人伦人妻中文字幕无码久久网 | 55夜色66夜色国产精品视频 | 亚洲热妇无码av在线播放 | 在线视频网站www色 | 欧洲精品码一区二区三区免费看 | 亚洲色欲色欲欲www在线 | 国产精品欧美成人 | 天天av天天av天天透 | 国产亚洲精品久久久久久 | 亚洲中文字幕成人无码 | 成年女人永久免费看片 | 又紧又大又爽精品一区二区 | 无码国产激情在线观看 | 国产亚av手机在线观看 | 亚洲一区二区三区无码久久 | 日本xxxx色视频在线观看免费 | 久久久久国色av免费观看性色 | а√资源新版在线天堂 | 亚洲欧洲无卡二区视頻 | 精品aⅴ一区二区三区 | 最近中文2019字幕第二页 | 一本大道伊人av久久综合 | 人人妻人人澡人人爽欧美一区九九 | 国产色视频一区二区三区 | 少妇的肉体aa片免费 | 欧美怡红院免费全部视频 | 麻豆成人精品国产免费 | 丰满人妻翻云覆雨呻吟视频 | 亚洲国产精品无码久久久久高潮 | 欧美日韩亚洲国产精品 | 国产成人精品三级麻豆 | 在线播放免费人成毛片乱码 | 玩弄人妻少妇500系列视频 | 内射老妇bbwx0c0ck | 中文精品久久久久人妻不卡 | 精品国产一区二区三区四区在线看 | 国产人妻人伦精品1国产丝袜 | 欧美人与禽zoz0性伦交 | 国内老熟妇对白xxxxhd | 狂野欧美性猛交免费视频 | 波多野结衣av在线观看 | 色狠狠av一区二区三区 | 欧洲vodafone精品性 | 久久久亚洲欧洲日产国码αv | 欧美性猛交xxxx富婆 | 99精品久久毛片a片 | 亚洲午夜无码久久 | 亚洲精品欧美二区三区中文字幕 | 18禁止看的免费污网站 | 欧美性色19p | 成人影院yy111111在线观看 | 精品 日韩 国产 欧美 视频 | 少妇太爽了在线观看 | 国产精品久久国产精品99 | 亚洲精品中文字幕久久久久 | 久久精品女人天堂av免费观看 | 欧美阿v高清资源不卡在线播放 | 无码人妻精品一区二区三区下载 | 天堂亚洲免费视频 | 无码人妻丰满熟妇区毛片18 | 成人综合网亚洲伊人 | 学生妹亚洲一区二区 | 熟妇人妻中文av无码 | 日本熟妇人妻xxxxx人hd | 国产精品久久国产精品99 | 蜜臀aⅴ国产精品久久久国产老师 | 亚洲日韩av片在线观看 | 成人无码精品1区2区3区免费看 | 少妇性l交大片欧洲热妇乱xxx | 国产成人无码专区 | 天天躁日日躁狠狠躁免费麻豆 | 亚洲成熟女人毛毛耸耸多 | 国产三级精品三级男人的天堂 | 女高中生第一次破苞av | 日产国产精品亚洲系列 | 久久国产精品精品国产色婷婷 | 好爽又高潮了毛片免费下载 | 国产乱人偷精品人妻a片 | 国产成人无码午夜视频在线观看 | 牲欲强的熟妇农村老妇女视频 | 给我免费的视频在线观看 | 伊人久久婷婷五月综合97色 | 欧美高清在线精品一区 | 国产超级va在线观看视频 | 精品国偷自产在线 | 国产精品视频免费播放 | 国产真人无遮挡作爱免费视频 | 欧美阿v高清资源不卡在线播放 | 日韩精品无码一区二区中文字幕 | 免费观看的无遮挡av | 国产精品va在线观看无码 | 丰满诱人的人妻3 | 国产精品理论片在线观看 | 欧美国产亚洲日韩在线二区 | 九九久久精品国产免费看小说 | 成 人影片 免费观看 | 亚洲大尺度无码无码专区 | 亚洲精品一区国产 | 国産精品久久久久久久 | 国产色在线 | 国产 | 一个人免费观看的www视频 | 福利一区二区三区视频在线观看 | 日本熟妇大屁股人妻 | 一本久道久久综合狠狠爱 | 国产成人精品三级麻豆 | 在线精品亚洲一区二区 | 天天av天天av天天透 | 国产人成高清在线视频99最全资源 | 人人妻在人人 | 国产精品多人p群无码 | 一本大道伊人av久久综合 | 蜜桃av抽搐高潮一区二区 | 国产亚洲人成在线播放 | 4hu四虎永久在线观看 | 性欧美熟妇videofreesex | 熟女体下毛毛黑森林 | 正在播放东北夫妻内射 | 欧美人与牲动交xxxx | 无套内谢老熟女 | 国产九九九九九九九a片 | 国产深夜福利视频在线 | 捆绑白丝粉色jk震动捧喷白浆 | 欧美三级a做爰在线观看 | 无码av最新清无码专区吞精 | 国内老熟妇对白xxxxhd | 久久 国产 尿 小便 嘘嘘 | 丰满人妻一区二区三区免费视频 | 婷婷五月综合缴情在线视频 | 国产精品亚洲lv粉色 | 国产欧美精品一区二区三区 | 67194成是人免费无码 | 亚洲综合精品香蕉久久网 | 丰腴饱满的极品熟妇 | 国产亚洲tv在线观看 | 成人免费视频一区二区 | 国产精品嫩草久久久久 | 久久精品99久久香蕉国产色戒 | 老熟妇仑乱视频一区二区 | 亚洲人亚洲人成电影网站色 | 人人妻人人澡人人爽欧美一区九九 | 天天做天天爱天天爽综合网 | 激情内射亚州一区二区三区爱妻 | 欧美阿v高清资源不卡在线播放 | www国产精品内射老师 | 少妇太爽了在线观看 | 亚洲自偷自偷在线制服 | 亚洲 高清 成人 动漫 | 特级做a爰片毛片免费69 | 久久久久国色av免费观看性色 | 中文字幕日韩精品一区二区三区 | 欧美国产亚洲日韩在线二区 | 亚洲国产欧美日韩精品一区二区三区 | 又紧又大又爽精品一区二区 | 日本一区二区三区免费高清 | 欧美丰满少妇xxxx性 | 国产激情无码一区二区app | 大屁股大乳丰满人妻 | 性欧美大战久久久久久久 | 黑人巨大精品欧美一区二区 | 熟女俱乐部五十路六十路av | 中文字幕人成乱码熟女app | 久久99精品久久久久久 | 成在人线av无码免费 | 老子影院午夜精品无码 | 国产xxx69麻豆国语对白 | 欧美成人午夜精品久久久 | 中文字幕无码人妻少妇免费 | 日本护士毛茸茸高潮 | 爽爽影院免费观看 | 无码国产色欲xxxxx视频 | 日本护士毛茸茸高潮 | 日本成熟视频免费视频 | 成人试看120秒体验区 | 中文无码伦av中文字幕 | 国产特级毛片aaaaaa高潮流水 | 国产免费无码一区二区视频 | 亚洲精品国产精品乱码不卡 | 亚洲中文无码av永久不收费 | 亚洲精品午夜国产va久久成人 | 午夜无码人妻av大片色欲 | 亚洲一区二区观看播放 | 麻豆精品国产精华精华液好用吗 | 国产乱人伦av在线无码 | 亚洲天堂2017无码中文 | 国产成人精品必看 | 奇米影视7777久久精品 | 欧美日韩亚洲国产精品 | 亚洲精品www久久久 | 巨爆乳无码视频在线观看 | 最近免费中文字幕中文高清百度 | 国产激情无码一区二区 | 国产亚洲美女精品久久久2020 | 亚洲欧美国产精品久久 | 免费观看的无遮挡av | 一区二区三区高清视频一 | 高潮毛片无遮挡高清免费视频 | 欧美猛少妇色xxxxx | 国产无遮挡吃胸膜奶免费看 | 亚洲精品一区二区三区婷婷月 | 中文字幕无码日韩专区 | 中文字幕日产无线码一区 | 亚洲精品成a人在线观看 | 久久人人爽人人爽人人片av高清 | 国产片av国语在线观看 | 亚洲а∨天堂久久精品2021 | 中文字幕乱码亚洲无线三区 | 帮老师解开蕾丝奶罩吸乳网站 | 亚洲日韩中文字幕在线播放 | 午夜性刺激在线视频免费 | 精品国产青草久久久久福利 | 蜜桃无码一区二区三区 | 国产国产精品人在线视 | 亚洲国产日韩a在线播放 | 亚洲精品午夜无码电影网 | 日韩人妻无码中文字幕视频 | 无码人妻少妇伦在线电影 | 爆乳一区二区三区无码 | 精品久久久无码中文字幕 | 国产成人综合在线女婷五月99播放 | 玩弄中年熟妇正在播放 | 欧美成人免费全部网站 | 丰满少妇熟乱xxxxx视频 | 成人影院yy111111在线观看 | 无码av免费一区二区三区试看 | 在线看片无码永久免费视频 | 免费国产黄网站在线观看 | 97人妻精品一区二区三区 | 精品厕所偷拍各类美女tp嘘嘘 | 亚洲日本在线电影 | 樱花草在线社区www | 久久国语露脸国产精品电影 | 久久午夜无码鲁丝片午夜精品 | 国产免费观看黄av片 | 扒开双腿吃奶呻吟做受视频 | yw尤物av无码国产在线观看 | 欧美人与物videos另类 | 一本加勒比波多野结衣 | 99国产欧美久久久精品 | 欧美zoozzooz性欧美 | 鲁大师影院在线观看 | 亚洲の无码国产の无码步美 | 国内精品人妻无码久久久影院蜜桃 | 国产明星裸体无码xxxx视频 | 在线亚洲高清揄拍自拍一品区 | 亚洲国产精品无码一区二区三区 | 色一情一乱一伦一区二区三欧美 | 国产婷婷色一区二区三区在线 | а天堂中文在线官网 | 2019午夜福利不卡片在线 | 成人欧美一区二区三区黑人免费 | 性色欲情网站iwww九文堂 | 久久久久成人片免费观看蜜芽 | 国产人妻大战黑人第1集 | 日本高清一区免费中文视频 | 日欧一片内射va在线影院 | 免费人成网站视频在线观看 | 精品无人区无码乱码毛片国产 | 久久人人爽人人爽人人片ⅴ | 国内精品久久毛片一区二区 | 午夜性刺激在线视频免费 | 久久精品视频在线看15 | 在线a亚洲视频播放在线观看 | 中文字幕av无码一区二区三区电影 | 国产精品香蕉在线观看 | 精品无码av一区二区三区 | 欧美国产亚洲日韩在线二区 | 99久久人妻精品免费二区 | 蜜桃视频插满18在线观看 | 特级做a爰片毛片免费69 | 欧美亚洲日韩国产人成在线播放 | 国产精品久久久久影院嫩草 | 国产色精品久久人妻 | 国产成人亚洲综合无码 | 天天躁夜夜躁狠狠是什么心态 | 欧美性生交活xxxxxdddd | 久久久久久久女国产乱让韩 | 婷婷五月综合缴情在线视频 | 成人免费视频视频在线观看 免费 | 国产精品久久久一区二区三区 | 少妇久久久久久人妻无码 | 亚洲乱亚洲乱妇50p | 少妇被粗大的猛进出69影院 | 巨爆乳无码视频在线观看 | 欧美激情综合亚洲一二区 | 99久久精品日本一区二区免费 | 一本色道久久综合亚洲精品不卡 | 国产亚洲精品精品国产亚洲综合 | 久久久久国色av免费观看性色 | 妺妺窝人体色www在线小说 | aⅴ亚洲 日韩 色 图网站 播放 | 久久人人97超碰a片精品 | 国产又爽又猛又粗的视频a片 | 亚洲综合色区中文字幕 | 国产精品18久久久久久麻辣 | 377p欧洲日本亚洲大胆 | 粗大的内捧猛烈进出视频 | 学生妹亚洲一区二区 | 少妇性俱乐部纵欲狂欢电影 | 97久久国产亚洲精品超碰热 | 麻豆精品国产精华精华液好用吗 | 亚洲精品国产精品乱码不卡 | 四十如虎的丰满熟妇啪啪 | 中国大陆精品视频xxxx | 国产偷国产偷精品高清尤物 | 蜜桃无码一区二区三区 | 国产做国产爱免费视频 | 波多野42部无码喷潮在线 | 亚洲va中文字幕无码久久不卡 | 欧美日本日韩 | 漂亮人妻洗澡被公强 日日躁 | 麻豆蜜桃av蜜臀av色欲av | 国产精品亚洲专区无码不卡 | www成人国产高清内射 | 亚洲色欲色欲天天天www | 内射欧美老妇wbb | 99久久久国产精品无码免费 | 日本一区二区三区免费播放 | 亚洲中文字幕无码一久久区 | 成熟女人特级毛片www免费 | 亚洲狠狠婷婷综合久久 | 一二三四在线观看免费视频 | 国产sm调教视频在线观看 | 97久久精品无码一区二区 | 2020久久超碰国产精品最新 | 好爽又高潮了毛片免费下载 | 一二三四在线观看免费视频 | 日本丰满护士爆乳xxxx | 国产激情艳情在线看视频 | 国产精品久久国产三级国 | 日本一本二本三区免费 | 国产亚洲欧美日韩亚洲中文色 | 东京热无码av男人的天堂 | 精品少妇爆乳无码av无码专区 | 欧美日韩人成综合在线播放 | 扒开双腿疯狂进出爽爽爽视频 | 久精品国产欧美亚洲色aⅴ大片 | 国产av剧情md精品麻豆 | 国产成人无码区免费内射一片色欲 | 丰满护士巨好爽好大乳 | 黑人粗大猛烈进出高潮视频 | 国产成人无码av一区二区 | 国产人妖乱国产精品人妖 | 欧美 日韩 亚洲 在线 | 中文字幕 亚洲精品 第1页 | 少妇厨房愉情理9仑片视频 | 国产亚av手机在线观看 | 中文字幕人妻丝袜二区 | 国产午夜精品一区二区三区嫩草 | 久久精品国产一区二区三区 | 精品一区二区三区波多野结衣 | 成年美女黄网站色大免费视频 | 极品尤物被啪到呻吟喷水 | 国产后入清纯学生妹 | 岛国片人妻三上悠亚 | 国产无遮挡又黄又爽免费视频 | 亚洲国产一区二区三区在线观看 | 亚洲日韩乱码中文无码蜜桃臀网站 | 无码av中文字幕免费放 | 久久综合给合久久狠狠狠97色 | 国产性生交xxxxx无码 | 亚洲人成网站免费播放 | 国产69精品久久久久app下载 | 秋霞特色aa大片 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲精品成a人在线观看 | 久久久久久久人妻无码中文字幕爆 | 男女下面进入的视频免费午夜 | 国产成人无码区免费内射一片色欲 | 好爽又高潮了毛片免费下载 | 300部国产真实乱 | 波多野结衣aⅴ在线 | 欧美 丝袜 自拍 制服 另类 | 精品国产一区二区三区四区 | 日本大乳高潮视频在线观看 | 国产明星裸体无码xxxx视频 | 久久五月精品中文字幕 | 男女作爱免费网站 | 久久综合网欧美色妞网 | 99久久99久久免费精品蜜桃 | 网友自拍区视频精品 | 国产在线精品一区二区高清不卡 | 99久久久国产精品无码免费 | 大地资源网第二页免费观看 | 亚洲人成影院在线无码按摩店 | 国产成人精品久久亚洲高清不卡 | 熟女体下毛毛黑森林 | 熟女少妇人妻中文字幕 | 亚洲综合另类小说色区 | 国产乱人无码伦av在线a | 亚洲欧美日韩综合久久久 | 久激情内射婷内射蜜桃人妖 | 天下第一社区视频www日本 | 无码人妻精品一区二区三区不卡 | 水蜜桃av无码 | 亚洲国产欧美日韩精品一区二区三区 | 久久久久久国产精品无码下载 | 久久久亚洲欧洲日产国码αv | 成人女人看片免费视频放人 | 成人欧美一区二区三区 | 久久亚洲精品成人无码 | 98国产精品综合一区二区三区 | 国产精品.xx视频.xxtv | 国产熟女一区二区三区四区五区 | 亚洲色无码一区二区三区 | 欧美日本精品一区二区三区 | 国产精品嫩草久久久久 | 亚洲色大成网站www国产 | 色欲人妻aaaaaaa无码 | 一本大道久久东京热无码av | 亚洲熟妇自偷自拍另类 | 成人免费无码大片a毛片 | 精品亚洲韩国一区二区三区 | 亚洲人成影院在线观看 | 亚洲自偷精品视频自拍 | 亚洲国产一区二区三区在线观看 | 国产乱人伦av在线无码 | 免费网站看v片在线18禁无码 | 日本乱人伦片中文三区 | 小泽玛莉亚一区二区视频在线 | 国产亚洲欧美在线专区 | 亚洲精品国产a久久久久久 | 国产午夜视频在线观看 | 国产高清不卡无码视频 | 99久久久国产精品无码免费 | 成人影院yy111111在线观看 | 国模大胆一区二区三区 | 亚洲啪av永久无码精品放毛片 | 永久黄网站色视频免费直播 | 无码av中文字幕免费放 | 97夜夜澡人人爽人人喊中国片 | 日产精品高潮呻吟av久久 | 亚洲中文字幕无码中文字在线 | 亚洲の无码国产の无码影院 | 波多野结衣乳巨码无在线观看 | 日韩精品无码一区二区中文字幕 | 国产成人综合在线女婷五月99播放 | 国产精品爱久久久久久久 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 亚洲中文字幕久久无码 | 国产亚洲精品久久久久久久 | 亚洲の无码国产の无码影院 | 久久久久成人精品免费播放动漫 | 亚洲人成网站在线播放942 | 日本精品人妻无码免费大全 | 日韩人妻系列无码专区 | 人妻与老人中文字幕 | 国产精品亚洲五月天高清 | 精品国产一区av天美传媒 | 水蜜桃av无码 | 精品一区二区不卡无码av | www成人国产高清内射 | 国产午夜手机精彩视频 | 精品国产一区二区三区av 性色 | 亚洲中文字幕无码中文字在线 | 欧美日韩亚洲国产精品 | 狠狠躁日日躁夜夜躁2020 | 欧美精品一区二区精品久久 | 水蜜桃亚洲一二三四在线 | 婷婷丁香五月天综合东京热 | 国产成人午夜福利在线播放 | 欧美熟妇另类久久久久久多毛 | 熟女少妇在线视频播放 | 日产精品99久久久久久 | 97精品国产97久久久久久免费 | 2019午夜福利不卡片在线 | 成人片黄网站色大片免费观看 | 亚洲中文无码av永久不收费 | 色婷婷综合激情综在线播放 | 亚洲欧美国产精品久久 | 欧美兽交xxxx×视频 | 亚洲日韩乱码中文无码蜜桃臀网站 | 成人女人看片免费视频放人 | 国产真实乱对白精彩久久 | 国产小呦泬泬99精品 | 久久成人a毛片免费观看网站 | 无码任你躁久久久久久久 | 精品国产麻豆免费人成网站 | 99久久人妻精品免费二区 | 国产内射老熟女aaaa | 人人妻人人藻人人爽欧美一区 | 综合激情五月综合激情五月激情1 | 精品一区二区不卡无码av | 国产精品丝袜黑色高跟鞋 | 亚洲色欲色欲欲www在线 | 欧美老人巨大xxxx做受 | 国产成人亚洲综合无码 | 少妇人妻大乳在线视频 | 亚洲欧洲中文日韩av乱码 | 人人超人人超碰超国产 | 久久综合给合久久狠狠狠97色 | 99国产精品白浆在线观看免费 | 精品无人区无码乱码毛片国产 | 久久久久久a亚洲欧洲av冫 | 精品一区二区不卡无码av | 国产av人人夜夜澡人人爽麻豆 | 无码人妻丰满熟妇区五十路百度 | 国产亚洲欧美在线专区 | 日日摸日日碰夜夜爽av | 日本饥渴人妻欲求不满 | 日本一卡2卡3卡四卡精品网站 | 中文字幕乱码人妻无码久久 | 日本一区二区三区免费播放 | 亚洲中文字幕无码中文字在线 | 人妻天天爽夜夜爽一区二区 | 国产精品久久久午夜夜伦鲁鲁 | 久久综合给久久狠狠97色 | 国产精品久久久久久亚洲毛片 | 欧美老人巨大xxxx做受 | 精品国产精品久久一区免费式 | 强伦人妻一区二区三区视频18 | 一本色道久久综合亚洲精品不卡 | 久久精品国产亚洲精品 | 国产成人无码a区在线观看视频app | 亚洲伊人久久精品影院 | 两性色午夜视频免费播放 | 欧美日韩综合一区二区三区 | 久久久精品国产sm最大网站 | 狠狠综合久久久久综合网 | 久久综合九色综合97网 | 欧美日韩久久久精品a片 | 无码人妻丰满熟妇区毛片18 | 日本精品人妻无码77777 天堂一区人妻无码 | 久久久久99精品国产片 | 又黄又爽又色的视频 | 国产成人精品无码播放 | 欧美色就是色 | 久久久久亚洲精品中文字幕 | 国产超级va在线观看视频 | 亚无码乱人伦一区二区 | 国产综合在线观看 | 帮老师解开蕾丝奶罩吸乳网站 | 激情五月综合色婷婷一区二区 | 国精品人妻无码一区二区三区蜜柚 | 亚洲乱亚洲乱妇50p | 亚洲国产欧美日韩精品一区二区三区 | 激情内射日本一区二区三区 | 最新版天堂资源中文官网 | 激情综合激情五月俺也去 | 女人被爽到呻吟gif动态图视看 | 激情亚洲一区国产精品 | 中文字幕乱码亚洲无线三区 | 最近免费中文字幕中文高清百度 | yw尤物av无码国产在线观看 | 人人爽人人爽人人片av亚洲 | 亚洲区欧美区综合区自拍区 | 久久zyz资源站无码中文动漫 | 特大黑人娇小亚洲女 | 国内精品九九久久久精品 | 亚洲爆乳大丰满无码专区 | 国产乱人伦av在线无码 | 久久精品国产一区二区三区肥胖 | 色综合视频一区二区三区 | 国产黄在线观看免费观看不卡 | 成人aaa片一区国产精品 | 欧美黑人性暴力猛交喷水 | 国产高潮视频在线观看 | 国产精品怡红院永久免费 | 日韩欧美中文字幕在线三区 | 亚洲精品中文字幕 | 少妇被粗大的猛进出69影院 | 精品久久久久久亚洲精品 | 少女韩国电视剧在线观看完整 | 国产va免费精品观看 | 中文字幕人妻丝袜二区 | 日本一区二区三区免费高清 | 丰满岳乱妇在线观看中字无码 | 国产av一区二区三区最新精品 | av无码电影一区二区三区 | 在线 国产 欧美 亚洲 天堂 | 内射白嫩少妇超碰 | 精品一区二区三区波多野结衣 | 欧美老人巨大xxxx做受 | 亚洲七七久久桃花影院 | 欧美 日韩 人妻 高清 中文 | 亚洲精品成人av在线 | 亚洲国产日韩a在线播放 | 俺去俺来也在线www色官网 | 国产精品美女久久久 | 欧美熟妇另类久久久久久多毛 | 色一情一乱一伦一区二区三欧美 | 日韩av无码一区二区三区 | 波多野结衣av一区二区全免费观看 | 日本精品人妻无码77777 天堂一区人妻无码 | 国产超碰人人爽人人做人人添 | 免费看男女做好爽好硬视频 | 亚洲精品久久久久久一区二区 | 国产精品无码永久免费888 | 精品亚洲韩国一区二区三区 | 久久伊人色av天堂九九小黄鸭 | 国精品人妻无码一区二区三区蜜柚 | 欧美高清在线精品一区 | 天堂久久天堂av色综合 | 国产真实乱对白精彩久久 | 欧美性生交活xxxxxdddd | 日本一卡二卡不卡视频查询 | 久久久www成人免费毛片 | 亚洲国产精品一区二区第一页 | 国产精品理论片在线观看 | 国产精品第一区揄拍无码 | 1000部夫妻午夜免费 | 国产网红无码精品视频 | 亚无码乱人伦一区二区 | 欧美人与善在线com | 中文字幕av日韩精品一区二区 | 在线观看免费人成视频 | 日日鲁鲁鲁夜夜爽爽狠狠 | 久久久精品国产sm最大网站 | 亚洲色在线无码国产精品不卡 | 一本色道婷婷久久欧美 | 亚洲色在线无码国产精品不卡 | 亚洲综合无码一区二区三区 | 国产成人精品三级麻豆 | 国产精品久久久一区二区三区 | 天堂亚洲免费视频 | 国产莉萝无码av在线播放 | 亚洲性无码av中文字幕 | 久久久www成人免费毛片 | 日韩人妻少妇一区二区三区 | 精品熟女少妇av免费观看 | 国产精品人人爽人人做我的可爱 | 成人免费视频视频在线观看 免费 | 麻花豆传媒剧国产免费mv在线 | 久久99精品久久久久久动态图 | 精品乱子伦一区二区三区 | а天堂中文在线官网 | 亚洲精品欧美二区三区中文字幕 | 国产乱人偷精品人妻a片 | 强伦人妻一区二区三区视频18 | 亚洲精品成a人在线观看 | 午夜不卡av免费 一本久久a久久精品vr综合 | 在线亚洲高清揄拍自拍一品区 | 久久无码中文字幕免费影院蜜桃 | 亚洲中文字幕乱码av波多ji | 亚洲一区二区三区四区 | www一区二区www免费 | 日本丰满熟妇videos | 亚洲欧美国产精品久久 | 蜜桃视频插满18在线观看 | 国产午夜无码视频在线观看 | 亚洲日韩av一区二区三区中文 | 国产 精品 自在自线 | 丰满人妻精品国产99aⅴ | 国产午夜无码视频在线观看 | 色情久久久av熟女人妻网站 | 妺妺窝人体色www在线小说 | 久久精品国产一区二区三区肥胖 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 国产内射爽爽大片视频社区在线 | 麻豆av传媒蜜桃天美传媒 | 日日摸天天摸爽爽狠狠97 | 综合人妻久久一区二区精品 | 亚洲国产成人a精品不卡在线 | 国产农村乱对白刺激视频 | 久久99精品久久久久婷婷 | 草草网站影院白丝内射 | 国产成人亚洲综合无码 | 国产亲子乱弄免费视频 | 秋霞成人午夜鲁丝一区二区三区 | 女人色极品影院 | 色综合久久久无码网中文 | 亚洲国产高清在线观看视频 | 性欧美牲交xxxxx视频 | 日日干夜夜干 | 野狼第一精品社区 | 国产婷婷色一区二区三区在线 | 丰满人妻一区二区三区免费视频 | 午夜福利试看120秒体验区 | 久久精品中文字幕一区 | 香港三级日本三级妇三级 | 日本成熟视频免费视频 | √天堂资源地址中文在线 | 鲁鲁鲁爽爽爽在线视频观看 | 国产精品va在线观看无码 | 中文字幕 亚洲精品 第1页 | 牲欲强的熟妇农村老妇女视频 | 在线播放无码字幕亚洲 | 久久精品无码一区二区三区 | 国产香蕉尹人综合在线观看 | 精品无码国产自产拍在线观看蜜 | 超碰97人人射妻 | 日韩av无码一区二区三区不卡 | 麻花豆传媒剧国产免费mv在线 | 给我免费的视频在线观看 | 99久久久国产精品无码免费 | 男人扒开女人内裤强吻桶进去 | 国产激情精品一区二区三区 | 日本成熟视频免费视频 | 99麻豆久久久国产精品免费 | 亚洲无人区午夜福利码高清完整版 | 超碰97人人做人人爱少妇 | 伦伦影院午夜理论片 | 日产国产精品亚洲系列 | 激情综合激情五月俺也去 | 人人妻人人澡人人爽人人精品 | 国产无遮挡又黄又爽又色 | 无码乱肉视频免费大全合集 | 97精品人妻一区二区三区香蕉 | 成人免费视频视频在线观看 免费 | 九九在线中文字幕无码 | 又紧又大又爽精品一区二区 | 丰满少妇高潮惨叫视频 | 又色又爽又黄的美女裸体网站 | 麻豆果冻传媒2021精品传媒一区下载 | 人人妻人人澡人人爽欧美一区九九 | 亚洲中文字幕av在天堂 | 久久aⅴ免费观看 | 无码av免费一区二区三区试看 | 人妻尝试又大又粗久久 | 综合人妻久久一区二区精品 | 丁香啪啪综合成人亚洲 | 精品无码国产自产拍在线观看蜜 | 激情爆乳一区二区三区 | 国产在热线精品视频 | 亚洲人亚洲人成电影网站色 | 国产网红无码精品视频 | 亚洲精品欧美二区三区中文字幕 | 国内精品久久久久久中文字幕 | 强辱丰满人妻hd中文字幕 | 亚洲精品一区国产 | 牲欲强的熟妇农村老妇女 | 久久无码专区国产精品s | 一本久久a久久精品亚洲 | 亚洲天堂2017无码 | 国内精品九九久久久精品 | 精品无码一区二区三区的天堂 | 人人爽人人澡人人高潮 | 99视频精品全部免费免费观看 | 国产精品毛多多水多 | 亚洲欧美日韩成人高清在线一区 | 日日麻批免费40分钟无码 | 久久久久人妻一区精品色欧美 | 伊在人天堂亚洲香蕉精品区 | 久久人人爽人人人人片 | 九九综合va免费看 | 亚洲爆乳无码专区 | 国产乱人无码伦av在线a | 成人三级无码视频在线观看 | 国产精品亚洲一区二区三区喷水 | 中文字幕无码日韩专区 | 人妻少妇精品无码专区二区 | 成人无码视频在线观看网站 | 国产精品嫩草久久久久 | 亚拍精品一区二区三区探花 | 老熟女乱子伦 | 国产乱人伦偷精品视频 | 伊人久久大香线焦av综合影院 | 无套内射视频囯产 | 国产精华av午夜在线观看 | 欧美乱妇无乱码大黄a片 | 任你躁国产自任一区二区三区 | 国产成人人人97超碰超爽8 | 中文字幕久久久久人妻 | 色综合视频一区二区三区 | 黑森林福利视频导航 | 国产激情艳情在线看视频 | 国产一区二区三区精品视频 | 欧美日韩一区二区免费视频 | 久久久久se色偷偷亚洲精品av | 大色综合色综合网站 | 久久久国产一区二区三区 | 丰满人妻精品国产99aⅴ | 国产精品久久久午夜夜伦鲁鲁 | 成人试看120秒体验区 | 日韩精品成人一区二区三区 | 1000部夫妻午夜免费 | 国产精品va在线播放 | 日产国产精品亚洲系列 | 中文字幕无码免费久久99 | 无码人妻出轨黑人中文字幕 | 国产凸凹视频一区二区 | 性生交片免费无码看人 | 内射巨臀欧美在线视频 | 欧美高清在线精品一区 | 中文无码伦av中文字幕 | 久久精品人人做人人综合 | 蜜臀av在线播放 久久综合激激的五月天 | 精品国产一区二区三区四区在线看 | 大肉大捧一进一出视频出来呀 | 欧美性猛交xxxx富婆 | 国产美女极度色诱视频www | 日本爽爽爽爽爽爽在线观看免 | 国产精品国产自线拍免费软件 | 久久成人a毛片免费观看网站 | 97无码免费人妻超级碰碰夜夜 | 超碰97人人做人人爱少妇 | 女高中生第一次破苞av | 国产亚洲日韩欧美另类第八页 | 人人爽人人爽人人片av亚洲 | 人妻少妇精品无码专区动漫 | 99久久人妻精品免费二区 | 国产两女互慰高潮视频在线观看 | 色欲久久久天天天综合网精品 | 丰满人妻一区二区三区免费视频 | 国产精品久久久久久无码 | 国产人妻人伦精品 | 国产av无码专区亚洲a∨毛片 | 久久久www成人免费毛片 | 日韩精品无码一区二区中文字幕 | 久久久久久a亚洲欧洲av冫 | 国产极品视觉盛宴 | 综合人妻久久一区二区精品 | 无码一区二区三区在线 | 亚洲成av人综合在线观看 | 精品一区二区不卡无码av | 黑人玩弄人妻中文在线 | 娇妻被黑人粗大高潮白浆 | 国精产品一品二品国精品69xx | 成人免费视频视频在线观看 免费 | 大地资源网第二页免费观看 | 国产两女互慰高潮视频在线观看 | 国产艳妇av在线观看果冻传媒 | 超碰97人人做人人爱少妇 | 美女扒开屁股让男人桶 | 最近免费中文字幕中文高清百度 | 国产av无码专区亚洲a∨毛片 | 成人免费视频视频在线观看 免费 | 国产无套内射久久久国产 | 国产莉萝无码av在线播放 | 欧美 亚洲 国产 另类 | 亚洲国产日韩a在线播放 | 男人扒开女人内裤强吻桶进去 | 蜜臀av无码人妻精品 | 日日天干夜夜狠狠爱 | 欧美大屁股xxxxhd黑色 | 色五月五月丁香亚洲综合网 | 奇米影视7777久久精品人人爽 | 亚洲国产精品毛片av不卡在线 | 乱码av麻豆丝袜熟女系列 | 人人澡人人透人人爽 | 国产在线精品一区二区高清不卡 | 亚洲熟妇色xxxxx亚洲 | 中文字幕 人妻熟女 | 宝宝好涨水快流出来免费视频 | 日本熟妇浓毛 | 亚洲综合在线一区二区三区 | 九九综合va免费看 | 精品无码国产自产拍在线观看蜜 | 国产精品美女久久久久av爽李琼 | 国产成人精品一区二区在线小狼 | 老熟妇乱子伦牲交视频 | av无码电影一区二区三区 | 九九热爱视频精品 | 丰满岳乱妇在线观看中字无码 | 无码人妻精品一区二区三区不卡 | 成人免费视频一区二区 | 大地资源中文第3页 | 精品偷自拍另类在线观看 | 久久综合给合久久狠狠狠97色 | 亚洲午夜无码久久 | 我要看www免费看插插视频 | 久久97精品久久久久久久不卡 | 国产黑色丝袜在线播放 | 97夜夜澡人人双人人人喊 | 亚洲精品成人av在线 | 久久久久免费看成人影片 | 无码国产色欲xxxxx视频 | 日韩精品无码免费一区二区三区 | 捆绑白丝粉色jk震动捧喷白浆 | 国产真人无遮挡作爱免费视频 | 日本熟妇人妻xxxxx人hd | 永久免费观看美女裸体的网站 | 丰满肥臀大屁股熟妇激情视频 | 少妇人妻偷人精品无码视频 | 国产成人无码专区 | 狠狠色欧美亚洲狠狠色www | 国产精品久久久久久久9999 | 激情内射日本一区二区三区 | 国产精品第一国产精品 | 中国大陆精品视频xxxx | 婷婷丁香五月天综合东京热 | 国产精品手机免费 | 久久久中文字幕日本无吗 | 人人妻人人澡人人爽欧美精品 | 久久精品丝袜高跟鞋 | 午夜福利一区二区三区在线观看 | 波多野结衣aⅴ在线 | 欧美日韩一区二区综合 | 少妇无码吹潮 | 亚洲精品国产品国语在线观看 | 男女爱爱好爽视频免费看 | 久久精品中文字幕一区 | 97久久超碰中文字幕 | 波多野结衣av一区二区全免费观看 | 日本精品高清一区二区 | 国产av无码专区亚洲awww | 亚洲国产精品一区二区美利坚 | 精品国产青草久久久久福利 | 精品无码一区二区三区爱欲 | 4hu四虎永久在线观看 | 少妇人妻av毛片在线看 | 天天做天天爱天天爽综合网 | 狠狠色欧美亚洲狠狠色www | 自拍偷自拍亚洲精品10p | 人妻少妇精品视频专区 | 亚洲精品无码国产 | 国产无遮挡又黄又爽又色 | 色综合久久中文娱乐网 | 日本又色又爽又黄的a片18禁 | 国产精品久久久久久亚洲影视内衣 | 国产精品内射视频免费 | 日本乱人伦片中文三区 | 在线观看国产午夜福利片 | 亚洲熟妇色xxxxx欧美老妇y | 欧美成人免费全部网站 | 色婷婷香蕉在线一区二区 | 国内少妇偷人精品视频 | 动漫av一区二区在线观看 | 秋霞成人午夜鲁丝一区二区三区 | 人妻天天爽夜夜爽一区二区 | 成人女人看片免费视频放人 | 一本大道伊人av久久综合 | 麻豆md0077饥渴少妇 | 67194成是人免费无码 | 国产精品igao视频网 | 又大又硬又爽免费视频 | 精品国精品国产自在久国产87 | 综合人妻久久一区二区精品 | 日本高清一区免费中文视频 | 色欲av亚洲一区无码少妇 | 狠狠躁日日躁夜夜躁2020 | 亚洲欧洲日本无在线码 | 国产无av码在线观看 | 无码人妻少妇伦在线电影 | 久久伊人色av天堂九九小黄鸭 | 国产精品无码一区二区桃花视频 | 精品aⅴ一区二区三区 | 国产精品久久久久久亚洲影视内衣 | 漂亮人妻洗澡被公强 日日躁 | 欧美日韩色另类综合 | 精品国产乱码久久久久乱码 | 久久99精品久久久久久动态图 | 亚洲国产精品无码久久久久高潮 | 色噜噜亚洲男人的天堂 | 精品国产一区二区三区av 性色 | 中文毛片无遮挡高清免费 | 亚洲成a人片在线观看无码3d | 国产偷自视频区视频 | 中文字幕av伊人av无码av | 对白脏话肉麻粗话av | 少妇一晚三次一区二区三区 | 女人被爽到呻吟gif动态图视看 | 国产69精品久久久久app下载 | 疯狂三人交性欧美 | 国产午夜手机精彩视频 | 国产激情精品一区二区三区 | 澳门永久av免费网站 | 色狠狠av一区二区三区 | 亚洲精品国产a久久久久久 | 动漫av网站免费观看 | 亚洲精品国产a久久久久久 | 欧美野外疯狂做受xxxx高潮 | 亚洲综合在线一区二区三区 | 亚洲精品一区二区三区婷婷月 | 亚洲一区二区三区四区 | 97精品人妻一区二区三区香蕉 | 国产精品理论片在线观看 | 无套内谢老熟女 | 久久精品成人欧美大片 | 国产熟妇另类久久久久 | 日本又色又爽又黄的a片18禁 | 欧美第一黄网免费网站 | 国产亚洲精品久久久久久国模美 | 亚洲精品久久久久avwww潮水 | 乌克兰少妇xxxx做受 | 黑人巨大精品欧美黑寡妇 | 国产农村妇女高潮大叫 | 久久人妻内射无码一区三区 | 十八禁真人啪啪免费网站 | 亚洲人成网站在线播放942 | 亚洲人成网站免费播放 | 人妻少妇精品视频专区 | 国产精品办公室沙发 | 欧美成人高清在线播放 | 久久亚洲中文字幕精品一区 | 国产成人综合在线女婷五月99播放 | 精品欧洲av无码一区二区三区 | 丰满少妇弄高潮了www | 久久午夜无码鲁丝片午夜精品 | 欧美自拍另类欧美综合图片区 | 天干天干啦夜天干天2017 | 丰满少妇弄高潮了www | 日韩 欧美 动漫 国产 制服 | 久久国产36精品色熟妇 | 男女性色大片免费网站 | 亚洲一区av无码专区在线观看 | 97夜夜澡人人爽人人喊中国片 | 日韩在线不卡免费视频一区 | 久久天天躁狠狠躁夜夜免费观看 | 欧美刺激性大交 | 亚洲午夜久久久影院 | 2019午夜福利不卡片在线 | 狠狠综合久久久久综合网 | 久久亚洲日韩精品一区二区三区 | 欧美变态另类xxxx | 成人三级无码视频在线观看 | 日本va欧美va欧美va精品 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 一本大道久久东京热无码av | 国产精品久久久久久久影院 | 99久久久国产精品无码免费 | 在线播放无码字幕亚洲 | 色综合久久久久综合一本到桃花网 | 国产午夜手机精彩视频 | 一本无码人妻在中文字幕免费 | 亚洲 高清 成人 动漫 | 人人爽人人澡人人高潮 | 东京无码熟妇人妻av在线网址 | 日本丰满熟妇videos | 国产亚洲日韩欧美另类第八页 | 亚洲精品鲁一鲁一区二区三区 | 又紧又大又爽精品一区二区 | 国产真实乱对白精彩久久 | 亚洲成a人片在线观看日本 | 妺妺窝人体色www在线小说 | 亚洲成熟女人毛毛耸耸多 | 中文字幕乱码亚洲无线三区 | 成人免费视频视频在线观看 免费 | 亚洲国产一区二区三区在线观看 | 亚洲日韩av片在线观看 | 无码av最新清无码专区吞精 | 无码福利日韩神码福利片 | 国产成人亚洲综合无码 | 男女作爱免费网站 | 国产另类ts人妖一区二区 | 三上悠亚人妻中文字幕在线 | 无码精品人妻一区二区三区av | 在线 国产 欧美 亚洲 天堂 | 少妇激情av一区二区 | 欧美放荡的少妇 | 激情国产av做激情国产爱 | 色欲av亚洲一区无码少妇 | 亚洲中文字幕无码一久久区 | 中文字幕无码乱人伦 | www国产亚洲精品久久久日本 | 成人毛片一区二区 | 国产人妻久久精品二区三区老狼 | 日韩亚洲欧美中文高清在线 | 亚洲 欧美 激情 小说 另类 | 永久免费观看美女裸体的网站 | 中文字幕中文有码在线 | 国产色视频一区二区三区 | 伦伦影院午夜理论片 | 欧美 日韩 人妻 高清 中文 | 欧美性生交活xxxxxdddd | 精品国产aⅴ无码一区二区 | 人妻少妇精品无码专区动漫 | 无遮挡国产高潮视频免费观看 | a国产一区二区免费入口 | 无遮挡啪啪摇乳动态图 | 少妇高潮一区二区三区99 | 亚洲国产高清在线观看视频 | 国产在线一区二区三区四区五区 | 伊人久久大香线蕉av一区二区 | 最新国产麻豆aⅴ精品无码 | 免费国产黄网站在线观看 | 在线精品国产一区二区三区 | www国产亚洲精品久久久日本 | 亚洲午夜福利在线观看 | 乱中年女人伦av三区 | 98国产精品综合一区二区三区 | 日日夜夜撸啊撸 | 亚洲人成影院在线观看 | 麻花豆传媒剧国产免费mv在线 | 免费观看又污又黄的网站 | 国产精品亚洲а∨无码播放麻豆 | 日本乱人伦片中文三区 | 精品亚洲韩国一区二区三区 | 永久黄网站色视频免费直播 | 国产一区二区不卡老阿姨 | 国产亚洲美女精品久久久2020 | 国产人妻精品午夜福利免费 | 国产熟女一区二区三区四区五区 | 国产香蕉尹人综合在线观看 | 人人澡人人妻人人爽人人蜜桃 | 欧美日韩亚洲国产精品 | 亚洲国产av精品一区二区蜜芽 | 国产超级va在线观看视频 | 大肉大捧一进一出好爽视频 | 老熟妇仑乱视频一区二区 | 欧美色就是色 | 国产亚洲人成a在线v网站 | 一本久久伊人热热精品中文字幕 | 无码人妻精品一区二区三区不卡 | 在线视频网站www色 | 兔费看少妇性l交大片免费 | 一个人看的www免费视频在线观看 | 极品尤物被啪到呻吟喷水 | 日韩 欧美 动漫 国产 制服 | 亚洲人成人无码网www国产 | 最新版天堂资源中文官网 | 成人动漫在线观看 | 亚洲熟妇色xxxxx亚洲 | 亚洲综合无码久久精品综合 | 中文字幕无码av波多野吉衣 | 久久人人爽人人爽人人片av高清 | 黑人巨大精品欧美一区二区 | 久久久久成人片免费观看蜜芽 | 欧美日韩在线亚洲综合国产人 | 永久免费精品精品永久-夜色 | 波多野42部无码喷潮在线 | 久久99久久99精品中文字幕 | 特大黑人娇小亚洲女 | 一本大道伊人av久久综合 | 亚洲中文字幕在线观看 | 一本一道久久综合久久 | 少妇性l交大片 | 国语精品一区二区三区 | 亚洲精品无码人妻无码 | 国产香蕉尹人视频在线 | 亚洲娇小与黑人巨大交 | 欧美丰满少妇xxxx性 | 日韩欧美中文字幕公布 | 丰满肥臀大屁股熟妇激情视频 | 天干天干啦夜天干天2017 | 色妞www精品免费视频 | 国产亚洲美女精品久久久2020 | 天天拍夜夜添久久精品大 | 日日麻批免费40分钟无码 | 国产成人精品三级麻豆 | 97se亚洲精品一区 | 国产成人综合色在线观看网站 | 精品aⅴ一区二区三区 | 强开小婷嫩苞又嫩又紧视频 | 97人妻精品一区二区三区 | 国产成人人人97超碰超爽8 | 无码人妻丰满熟妇区毛片18 | 国产乱人无码伦av在线a | 在教室伦流澡到高潮hnp视频 | 亚洲一区二区三区香蕉 | 欧美成人午夜精品久久久 | 撕开奶罩揉吮奶头视频 | 99riav国产精品视频 |