成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

前端知識(shí)點(diǎn)(二)

lbool / 402人閱讀

摘要:在給一個(gè)目標(biāo)對(duì)象為構(gòu)造函數(shù)的代理對(duì)象構(gòu)造實(shí)例時(shí)觸發(fā)該操作,比如在執(zhí)行時(shí)。

1、元素上下垂直居中的方式有哪些?
元素水平垂直居中的方式有哪些?

absolute加margin方案

fixed 加 margin 方案

display:table 方案

行內(nèi)元素line-height方案

flex 彈性布局方案

transform 未知元素寬高解決方案

absolute加margin方案
    div{
        position: absolute;
        width: 100px;
        height: 100px;
        left: 50%;
        top: 50%:
        margin-top: -50px;
        margin-left: -50px;
    }
fixed 加 margin 方案
    div{
        position: fixed;
        width: 100px;
        height: 100px;
        top: 0;
        right:0;
        left: 0;
        bottom: 0;
        margin: auto;
    }
display:table 方案
    div{
        display: table-cell;
        vertical-align: middle;
        text-align: center;
        width: 100px;
        height: 100px;
    }
行內(nèi)元素line-height方案
    div{
        text-align: center;
        line-height: 100px;
    }
flex 彈性布局方案
    div{
        display: flex;
        align-items: center;
        justify-content:center
    }
transform 未知元素寬高解決方案
    div{
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%)
    }
2、var let const的區(qū)別及使用場(chǎng)景?
首先3個(gè)都是js聲明變量所用

Var
var 所聲明的變量,作用域?yàn)樵撜Z(yǔ)句所在的函數(shù)內(nèi),且存在變量提升

console.log(a) // 變量提升,var a 被提至所在作用域頂部, 所以這里輸出的值為 undefined 
var a = "JS"


for (var i = 0; i <10; i++) {  
  setTimeout(function() {  // 同步注冊(cè)回調(diào)函數(shù)到 異步的 宏任務(wù)隊(duì)列。
    console.log(i);        // 執(zhí)行此代碼時(shí),同步代碼for循環(huán)已經(jīng)執(zhí)行完成
  }, 0);
}

10 ... 10 // 10個(gè)10

console.log(i) // i 作用域全局 輸出10
后面聲明的會(huì)覆蓋之前聲明的變量

var a = "JS"
var a = "JavaScript"
Let
let 所聲明的變量,作用域?yàn)樵撜Z(yǔ)句的代碼塊內(nèi),不存在變量提升

console.log(a) // 變量沒(méi)有被提升, 輸出 ReferenceError: a is not defined
let a = "JavaScript"


for (let i = 0; i <10; i++) {  
  setTimeout(function() {  // 同步注冊(cè)回調(diào)函數(shù)到 異步的 宏任務(wù)隊(duì)列。
    console.log(i);        // 執(zhí)行此代碼時(shí),同步代碼for循環(huán)已經(jīng)執(zhí)行完成
  }, 0);
}

1...10 // 1到10

console.log(i) // i作用域for 塊級(jí)內(nèi),輸出 i is not defined
不允許重復(fù)聲明

let a = "JavaScript"
let a = "JS" // "a" has already been declared
Const
const 包含let 所有特性, 區(qū)別是const聲明的變量是一個(gè)只讀的不可修改的

這里注意,const保證的不是所聲明的值不得改動(dòng), 而是變量指向的內(nèi)存不可改動(dòng)

代碼示例

const a = {
    content: "JavaScript"
}

a.content = "JS"  // JS

a = {
    content: "JS" // 這里改變了內(nèi)存, 所以報(bào)錯(cuò) Assignment to constant variable
}
三句話總結(jié)
使用var聲明的變量,其作用域?yàn)樵撜Z(yǔ)句所在的函數(shù)內(nèi),且存在變量提升現(xiàn)象,后面的覆蓋前面的 
使用let聲明的變量,其作用域?yàn)樵撜Z(yǔ)句所在的代碼塊內(nèi),不存在變量提升, 不能重復(fù)聲明 
使用const聲明的是常量,在后面出現(xiàn)的代碼中不能再修改該常量的內(nèi)存

3、如何理解es6中的類(lèi)?
首先,JS作為一門(mén)非面向?qū)ο笳Z(yǔ)言,在es6之前,并沒(méi)有提供對(duì)類(lèi)的支持,我們常用的做法是通過(guò)構(gòu)造函數(shù)來(lái)模擬類(lèi)的實(shí)現(xiàn), 通過(guò)將屬性及方法定義在原型上共享給其實(shí)例

簡(jiǎn)單實(shí)現(xiàn):

function JS(name) {  
    this.name = name
}

JS.prototype.getName = function(){
    console.log(this.name)
}



const child = new JS("測(cè)試")

ES6 中的Class
es6中的class只是一個(gè)語(yǔ)法糖,class的寫(xiě)法只是讓對(duì)象原型看起來(lái)更加清晰

簡(jiǎn)單使用:

class JS {
    constructor(name) {    
        this.name = name
    }
    getName() {
        console.log(
            this.name
        )
    }
}



const child = new JS("測(cè)試")

每個(gè)類(lèi)中都有一個(gè)constructor方法,如果沒(méi)有顯示定義, 會(huì)默認(rèn)添加一個(gè)空的constructor,等同于ES5中的構(gòu)造函數(shù), 類(lèi)的所有方法都是定義在類(lèi)的prototype屬性上面,二者的主要區(qū)別在于Class必須使用new調(diào)用, ES5中構(gòu)造函數(shù)不使用new也可以調(diào)用, class 中新增靜態(tài)方法(static)關(guān)鍵字, 靜態(tài)方法不能被繼承只有通過(guò)類(lèi)本身來(lái)調(diào)用

class JS {
    constructor(name) {     
        this.name = name
    }    
    static
     getName() { 
        // static 方法只有類(lèi)本身能調(diào)用,實(shí)例不能繼承
        console.log(this.name)
    }
}

Extends 繼承
class 也可以通過(guò)extends 關(guān)鍵字實(shí)現(xiàn)繼承

代碼示例:

class JS {
    constructor(name) {
        this.name = name
    }
    getName() { 
        console.log(this.name)

    }
}



class Css extends Js{
  constructor() {  
    super();
  }
}



const child = new Css("測(cè)試")

child.getName() 
// "測(cè)試" 

extends 注意點(diǎn)
使用extends 繼承時(shí),子類(lèi)構(gòu)造函數(shù)中必須調(diào)用super(), 代表調(diào)用父類(lèi)的構(gòu)造函數(shù)

super雖然代碼父類(lèi)的constructor,但是返回的子類(lèi)的實(shí)例

super作為函數(shù)調(diào)用時(shí),代表類(lèi)的構(gòu)造函數(shù)

super作為對(duì)象調(diào)用時(shí), 在普通方法中,指向父類(lèi)的原型對(duì)象, 靜態(tài)方法中指向父類(lèi)
4、如何理解es6中的Promise?
js是單線程的,也就是說(shuō)一次只能完成一個(gè)任務(wù),為了解決這個(gè)問(wèn)題,js將任務(wù)的執(zhí)行模式分為兩種, 同步和異步, 在es5中我們處理異步只能通過(guò)的回調(diào)的方式進(jìn)行處理,在多層異步中,回調(diào)會(huì)一層一層嵌套,也就是所謂的回調(diào)地獄,promise就是異步編程的一種解決方案

Promise
特點(diǎn):

對(duì)象的狀態(tài)不受外界影響, promise對(duì)象代表一個(gè)異步操作,有三種狀態(tài)pendding(進(jìn)行中), fulfilled(成功), rejected(失敗)

一旦狀態(tài)改變,就不會(huì)再變, 狀態(tài)的改變只有兩種可能, pendding => fulfilled及pendding => rejected

基本用法:

const promise = new Promise(
    function(resolve,reject){
        // ... some code
        if(/* 異步操作成功 */){
            resolve(value);
            // 將狀態(tài)從pendding變成fulfilled
        }else{
            reject(error);
            // 將狀態(tài)從pendding變成rejected
        }
    }
);

promise 生成實(shí)例后可以使用then方法接收resolved狀態(tài)和rejected狀態(tài)的回調(diào)函數(shù)

    promise.then(()=>{
        console.log("resolved")

    },()=>{
        console.log("rejected")

    })

promise原型上具有catch方法, catch方法是rejection的別名, 用于指定發(fā)生錯(cuò)誤時(shí)的回調(diào)函數(shù)

    promise.then(()=>{
        console.log("resolved")

    },()=>{
        console.log("rejected")

    }).catch((err)=>{
        console.log("catch")
})

promise原型上具有finally方法,用于不管promise對(duì)象最后的狀態(tài)如何,都會(huì)執(zhí)行的操作

    promise.then(()=>{
        console.log("resolved")

    },()=>{
        console.log("rejected")
    }).finally((err)=>{
        console.log("end")
})

Promise.all
Promise.all方法用于將多個(gè) Promise 實(shí)例,包裝成一個(gè)新的 Promise 實(shí)例

簡(jiǎn)單使用:

const p = Promise.all([p1,p2,p3]);

特點(diǎn):

參數(shù)都是promise實(shí)例,如果不是會(huì)調(diào)用promise.resolve方法將其轉(zhuǎn)為promise實(shí)例

p的獎(jiǎng)態(tài)由傳入的promise實(shí)例的狀態(tài)決定

promise實(shí)例狀態(tài)都變成fulfilled,p狀態(tài)為fulfilled

promise實(shí)例狀態(tài)一個(gè)變成rejected,p狀態(tài)為rejected
6、如何理解es6中的Proxy?
如何理解es6中的Proxy?

試題解析:對(duì)proxy的理解,可能會(huì)延伸到vue的雙向綁定

Proxy(代理) 定義
可以理解為為目標(biāo)對(duì)象架設(shè)一層攔截,外界對(duì)該對(duì)象的訪問(wèn),都必須通過(guò)這層攔截

簡(jiǎn)單示例:

 
const obj = new Proxy({}, {
    get: (target, key, receiver) => {
        return "JS"
        console.log(`get ${key}`)
    },
    set: (target, key, value, receiver) => {
        console.log(`set ${key}`)

     },
 })



 obj.name = "JS"
 
// set name
// JS 



 obj.name 

 
// 這里進(jìn)入get的回調(diào)函數(shù),所有直接返回 JS 

從上面的示例中可以看出,Proxy存在一種機(jī)制,可以對(duì)外界的讀寫(xiě)操作進(jìn)行改寫(xiě)

Proxy 實(shí)例方法
proxy除了代理get,set操作,還能代理其它的操作,如下

handler.getPrototypeOf()



// 在讀取代理對(duì)象的原型時(shí)觸發(fā)該操作,比如在執(zhí)行 Object.getPrototypeOf(proxy) 時(shí)。



handler.setPrototypeOf()



// 在設(shè)置代理對(duì)象的原型時(shí)觸發(fā)該操作,比如在執(zhí)行 Object.setPrototypeOf(proxy, null) 時(shí)。



handler.isExtensible()



// 在判斷一個(gè)代理對(duì)象是否是可擴(kuò)展時(shí)觸發(fā)該操作,比如在執(zhí)行 Object.isExtensible(proxy) 時(shí)。



handler.preventExtensions()



// 在讓一個(gè)代理對(duì)象不可擴(kuò)展時(shí)觸發(fā)該操作,比如在執(zhí)行 Object.preventExtensions(proxy) 時(shí)。



handler.getOwnPropertyDescriptor()



// 在獲取代理對(duì)象某個(gè)屬性的屬性描述時(shí)觸發(fā)該操作,比如在執(zhí)行 Object.getOwnPropertyDescriptor(proxy, "foo") 時(shí)。



handler.defineProperty()



// 在定義代理對(duì)象某個(gè)屬性時(shí)的屬性描述時(shí)觸發(fā)該操作,比如在執(zhí)行 Object.defineProperty(proxy, "foo", {}) 時(shí)。



handler.has()



// 在判斷代理對(duì)象是否擁有某個(gè)屬性時(shí)觸發(fā)該操作,比如在執(zhí)行 "foo" in proxy 時(shí)。



handler.
get
()



// 在讀取代理對(duì)象的某個(gè)屬性時(shí)觸發(fā)該操作,比如在執(zhí)行 proxy.foo 時(shí)。



handler.set()



// 在給代理對(duì)象的某個(gè)屬性賦值時(shí)觸發(fā)該操作,比如在執(zhí)行 proxy.foo = 1 時(shí)。



handler.deleteProperty()



// 在刪除代理對(duì)象的某個(gè)屬性時(shí)觸發(fā)該操作,比如在執(zhí)行 delete proxy.foo 時(shí)。



handler.ownKeys()



// 在獲取代理對(duì)象的所有屬性鍵時(shí)觸發(fā)該操作,比如在執(zhí)行 Object.getOwnPropertyNames(proxy) 時(shí)。



handler.apply()



// 在調(diào)用一個(gè)目標(biāo)對(duì)象為函數(shù)的代理對(duì)象時(shí)觸發(fā)該操作,比如在執(zhí)行 proxy() 時(shí)。



handler.construct()



// 在給一個(gè)目標(biāo)對(duì)象為構(gòu)造函數(shù)的代理對(duì)象構(gòu)造實(shí)例時(shí)觸發(fā)該操作,比如在執(zhí)行new proxy() 時(shí)。

為什么要使用Proxy
攔截和監(jiān)視外部對(duì)對(duì)象的訪問(wèn)

降低函數(shù)或類(lèi)的復(fù)雜度

在復(fù)雜操作前對(duì)操作進(jìn)行校驗(yàn)或?qū)λ栀Y源進(jìn)行管理
7、如何理解es6中的decorator?
Decorator是ES7中的提案,概念借鑒于python, 它作用于一個(gè)目標(biāo)類(lèi)為其添加屬性于方法

我們用一個(gè)比喻來(lái)理解Decorator, 把孫悟空看成是一個(gè)類(lèi),那么棒子就是裝飾器為其裝備的武器

代碼理解:

@stick class Monkey{
}



function stick(target){// 第一個(gè)參數(shù)就是目標(biāo)類(lèi)的本身
    target.ATK = 100000
}



Monkey.ATK 
// 為悟空裝備了棒子,攻擊力提高了100000



// 如果一個(gè)參數(shù)不夠用,可以在裝飾器外層再包一層

function stick(atk){
    return function(targt){
        target.ATK = atk

    }
}



@stick(200000)
 
// 這樣我們就為悟空增加了200000攻擊力

class Monkey{
}

Decorator 不僅能修飾類(lèi),也能修飾類(lèi)的方法

class Monkey{
    @setName name(){
        this.name = "孫悟空"

    }
}

Decorator 只能修飾類(lèi)及類(lèi)的方法,不能修飾于函數(shù),因?yàn)榇嬖诤瘮?shù)提升

Mixin
在修飾器基礎(chǔ)上,我們可以實(shí)現(xiàn)mixin(混入),意思在一個(gè)對(duì)象中混入另一個(gè)對(duì)象的方法

代碼示例:

export function mixins(...list){
    return function(target){
        Object.assign(target.prototype,...list)
    }

}



const skill = {
    shapeshifting(){
        console.log("72變")
    }
}



@mixins(skill)

class Monkey{
}



Object.assign(Monkey.prototype, skill)



const swk = new Monkey()

swk.shapeshifting()
 
// 72變

使用Decorator的好處
擴(kuò)展功能,相對(duì)于繼承增加了更多的靈活性

代碼可讀性更高,裝飾器正確命名相當(dāng)于注釋
8、Es6中新增的數(shù)據(jù)類(lèi)型有哪些?使用場(chǎng)景?
Es6中新增的數(shù)據(jù)類(lèi)型有哪些?使用場(chǎng)景?

es6中新增一種原始數(shù)據(jù)類(lèi)型Symbol,最大的特點(diǎn)是唯一性,Symbol值通過(guò)Symbol函數(shù)生成, 在es5中對(duì)象的屬性都是字符串,我們使用他人定義的對(duì)象,然后去新增自己的屬性,這樣容易起沖突覆蓋原有的屬性, Symbol也可以看成為一個(gè)字符串,不過(guò)這個(gè)字符能保證是獨(dú)一無(wú)二的

基本示例:

// Object

const obj = {
    name:"JS"
}



obj.name ="JS每日一題"

// Symbol

const name = Symbol("name")
 
// 這里的參數(shù)沒(méi)有特殊意義,可以看成為Symbol加了一個(gè)標(biāo)記



obj[name]="JS每日一題"

Symbol用法
Symbol 目前有多種寫(xiě)法

// 一

const title = Symbol()

const obj = {}

obj[title]="JS每日一題"



// 二

const obj = {
    [title]:"JS每日一題"
}



// 三

Object.defineProperty(obj,title,{value:"JS每日一題"})





obj[title]
 
// 輸出的結(jié)果都為JS每日一題



這里注意一下,
Symbol
 
做為屬性名時(shí),不能用點(diǎn)去讀取



obj.title 
// undefined

Symbol作為屬性名,只有通過(guò)Object.getOwnPropertySymbols 方法返回

const attrs = Object.getOwnPropertySymbols(obj)



// [Symbol[title]]

Symbol.for()
如果我們想要重復(fù)Symbol可以使用Symbol.for, Smybol.for()及Smybol()的區(qū)別在于Symbol.for()會(huì)先去查找全局下有沒(méi)有聲明過(guò),如果有就返回該值,沒(méi)有就新建一個(gè),Symbol()每一次調(diào)用都會(huì)新建一個(gè)

代碼理解:

const title = Symbol.for("JS每日一題")
 



....
Symbol.for("JS每日一題")
 
//調(diào)用多次都是使用的第一次聲明的值



Symbol.for("JS每日一題")
  
===
 
Symbol.for("JS每日一題")
  
// true



const title =Symbol("JS每日一題")



Symbol("JS每日一題")
 
===
 
Symbol("JS每日一題")
 
// false

總結(jié)
Symbol的特點(diǎn)

獨(dú)一無(wú)二

不能隱式轉(zhuǎn)換

不能與其它數(shù)據(jù)類(lèi)型做運(yùn)算

不能使用點(diǎn)運(yùn)算符進(jìn)行操作
9、簡(jiǎn)述一下你為什么要使用vue?

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/101267.html

相關(guān)文章

  • 重學(xué)前端學(xué)習(xí)筆記()--前端學(xué)習(xí)路線與方法

    摘要:筆記說(shuō)明重學(xué)前端是程劭非前手機(jī)淘寶前端負(fù)責(zé)人在極客時(shí)間開(kāi)的一個(gè)專(zhuān)欄,每天分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完整的可以加入的專(zhuān)欄學(xué)習(xí)原文有的語(yǔ)音,如有侵權(quán)請(qǐng)聯(lián)系我,郵箱。 筆記說(shuō)明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開(kāi)的一個(gè)專(zhuān)欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完整的可以...

    mmy123456 評(píng)論0 收藏0
  • 重學(xué)前端學(xué)習(xí)筆記()--前端學(xué)習(xí)路線與方法

    摘要:筆記說(shuō)明重學(xué)前端是程劭非前手機(jī)淘寶前端負(fù)責(zé)人在極客時(shí)間開(kāi)的一個(gè)專(zhuān)欄,每天分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完整的可以加入的專(zhuān)欄學(xué)習(xí)原文有的語(yǔ)音,如有侵權(quán)請(qǐng)聯(lián)系我,郵箱。 筆記說(shuō)明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開(kāi)的一個(gè)專(zhuān)欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完整的可以...

    XFLY 評(píng)論0 收藏0
  • 重學(xué)前端學(xué)習(xí)筆記()--前端學(xué)習(xí)路線與方法

    摘要:筆記說(shuō)明重學(xué)前端是程劭非前手機(jī)淘寶前端負(fù)責(zé)人在極客時(shí)間開(kāi)的一個(gè)專(zhuān)欄,每天分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完整的可以加入的專(zhuān)欄學(xué)習(xí)原文有的語(yǔ)音,如有侵權(quán)請(qǐng)聯(lián)系我,郵箱。 筆記說(shuō)明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開(kāi)的一個(gè)專(zhuān)欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完整的可以...

    gougoujiang 評(píng)論0 收藏0
  • 前端資源系列(4)-前端學(xué)習(xí)資源分享&前端面試資源匯總

    摘要:特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒(méi)想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯(cuò)誤的地方,還請(qǐng)斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會(huì)及時(shí)更新,平時(shí)業(yè)務(wù)工作時(shí)也會(huì)不定期更...

    princekin 評(píng)論0 收藏0
  • 寫(xiě)一本關(guān)于 React.js 的小書(shū)

    摘要:因?yàn)楣ぷ髦幸恢痹谑褂茫惨恢币詠?lái)想總結(jié)一下自己關(guān)于的一些知識(shí)經(jīng)驗(yàn)。于是把一些想法慢慢整理書(shū)寫(xiě)下來(lái),做成一本開(kāi)源免費(fèi)專(zhuān)業(yè)簡(jiǎn)單的入門(mén)級(jí)別的小書(shū),提供給社區(qū)。本書(shū)的后續(xù)可能會(huì)做成視頻版本,敬請(qǐng)期待。本作品采用署名禁止演繹國(guó)際許可協(xié)議進(jìn)行許可 React.js 小書(shū) 本文作者:胡子大哈本文原文:React.js 小書(shū) 轉(zhuǎn)載請(qǐng)注明出處,保留原文鏈接以及作者信息 在線閱讀:http://huzi...

    Scorpion 評(píng)論0 收藏0
  • 前端基礎(chǔ)知識(shí)學(xué)習(xí)記錄(

    摘要:無(wú)序列表無(wú)序列表是一個(gè)項(xiàng)目的列表,此列項(xiàng)目使用粗體圓點(diǎn)典型的小黑圓圈進(jìn)行標(biāo)記??梢匀≈禐閷?shí)心黑圓點(diǎn)空心圓點(diǎn)實(shí)心黑方點(diǎn)。有序列表有序列表同樣也是一列項(xiàng)目,列表項(xiàng)目使用數(shù)字進(jìn)行標(biāo)記。自定義列表自定義列表是項(xiàng)目及其注釋的組合。 前端基礎(chǔ)知識(shí)學(xué)習(xí)記錄(二) 1、HTML 輸入類(lèi)型 元素的輸入類(lèi)型: 1、定義供文本輸入的單行輸入字段; 2、定義密碼字段(password字段中的字符會(huì)被做掩碼處理...

    Vultr 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<