一.css的居中方式
常用:
①文本左右居中:text-align:center
②文本上下居中:line-height
③利用邊距:padding: , margin:0 auto;
④按中線對齊:vertical-align:middle
⑤利用定位:position:fixed
top:50%;
left:50%;
二.px,em,rem,%
①它們都是用于設定字型的大小以及盒子的寬高,但是px不會因為浏覽器尺寸的改變而改
變,而em和rem會因為浏覽器尺寸的變化而變化
②px 是 pixel 的縮寫,它的含義是像素的意思,在指定字型大小和元素的寬高的時候使用。
像 素是相對于顯示器螢幕分辨率而言的 例:height:200px,
③em是一個相對長度的機關,是相對于目前對象内文本的字型尺寸。如過我們未設定目前文
本 的字型尺寸,那麼em就會相對于浏覽器的預設字型尺寸 例:width:6.25em;
④rem是CSS3中新增的一個相對機關,它與em的差別在于使用rem為元素設定字型大小時,
仍 然是相對大小,但相對的隻是HTML根元素。它的使用非常簡單,通過改變根元素的大小
就 可以改變它的值
⑤%和em大同小異,1em=100%
補
預設浏覽器1em=16px=100%,即0.625em=10px
三.display的值和作用
none | inline | block | inline-block | list-item | run-in | table | inline-table | table-row-group | table-
header-group | table-footer-group | table-row | table-column-group | table-column | table-cell |
table-caption | inherit
以下常用:
①none: 元素不會顯示,而且改元素現實的空間也不會保留。但有另外一個 visibility: hidden, 是
保留元素的空間的。
②inline: display的預設屬性。将元素顯示為内聯元素,元素前後沒有換行符。我們知道内聯元素
是無法設定寬高的,是以一旦将元素的display 屬性設為 inline, 設定屬性height和width是沒有用
的。此時影響它的高度一般是内部元素的高度(font-size)和padding。
③block: 将元素将顯示為塊級元素,元素前後會帶有換行符。設定為block後,元素可以設定
width和height了。元素獨占一行。
④inline-block:行内塊元素。這個屬性值融合了inline 和 block 的特性,即是它既是内聯元素,又
可以設定width和height。
四.路由跳轉的方式
①router-link (聲明式路由)
②router.push(程式設計式路由)
③this.$router.push() (函數裡面調用)
④ this.$router.replace() (用法同上,push)
⑤this.$router.go(n) ()
五.vue生命周期的了解
元件從建立到銷毀的一系列過程叫做元件的聲明周期。vue在整個生命周期裡面提供了一些函數,
可以在内部實作一些業務邏輯,并且這些函數會在一些特定的場合下去執行。
六.vue資料雙向綁定的原理,用了什麼設計模式(web進階)
裝飾者模式
觀察者模式
七.數組去重
①.最基本的去重方法
定義一個新數組,并存放原數組的第一個元素,然後将元素組一一和新數組的元素對比,若不同則
存放在新數組中。
function unique(arr){
var res = [arr[0]];
for(var i=1;i<arr.length;i++){
var repeat = false;
for(var j=0;j<res.length;j++){
if(arr[i] == res[j]){
repeat = true;
break;
}
}
if(!repeat){
res.push(arr[i]);
}
}
return res;
}
②先排序在去重
function unique(arr){
var arr2 = arr.sort();
var res = [arr2[0]];
for(var i=1;i<arr2.length;i++){
if(arr2[i] !== res[res.length-1]){
res.push(arr2[i]);
}
}
return res;
}
③利用對象的屬性去重
function unique(arr){
var res =[];
var json = {};
for(var i=0;i<arr.length;i++){
if(!json[arr[i]]){
res.push(arr[i]);
json[arr[i]] = 1;
}
}
return res;
}
④利用下标查詢
function unique(arr){
var newArr = [arr[0]];
for(var i=1;i<arr.length;i++){
if(newArr.indexOf(arr[i]) == -1){
newArr.push(arr[i]);
}
}
return newArr;
}
八.統計字元串中出現最多的字元
function fn(str) {
var hash = {}
for(let i = 0; i < str.length; i++) {
if(hash[str[i]]) {
hash[str[i]]++
} else {
hash[str[i]] = 1
}
}
let keys = Object.keys(hash)
let maxValue = -1, maxKey = ''
for(let i = 0; i < keys.length; i++) {
if(hash[keys[i]] > maxValue) {
maxValue = hash[keys[i]]
maxKey = keys[i]
}
}
console.log(maxKey, maxValue)
}
fn('aaaaaaabbbc')
九.js垃圾回收機制
①标記清除
JavaScript最常見的垃圾回收方式。當變量進入執行環境的時候,比如在函數中聲明一個變量,垃
圾回收器将其标記為“進入環境”。當函數執行結束,将其标記為“離開環境”。
②引用計數
引用計數的政策是跟蹤記錄每個值被使用的次數。當聲明了一個變量并将一個引用類型指派給該變
量的時候,這個值的引用次數就加一。如果該變量的值變成了另外一個,則這個值得引用次數減
一。當這個值的引用次數變為0的時候,說明沒有變量在使用,這個值沒法被通路。
十.原型、原型鍊
①原型:
每個函數都有一個prototype(原型)屬性,這個屬性都有一個指針,指向一個對象,這個對象包含由
特定類型所有執行個體共享的屬性和方法。使用原型的好處是可以讓所有對象執行個體共享原型包含的方法
和屬性。利用原型是目前構造函數建立的對象的父類,這個特點我們可以提取對象的公共屬性和方
法放在原型中,從程式的視角中具有封裝性。
②原型鍊:
當對象通路屬性和方法的時候,會往自身查找,如果沒有才會去原型中找。
原型鍊實作:讓原型等于父類構造函數建立的對象
原型鍊的本質:子類構造函數的
prototype
的
__proto__
指向父類構造器的
prototype
,建立對象之
間的關聯