關(guān)于一些小知識點的總結(jié)
- GET 和 POST 的區(qū)別?
1冤留、 get是從服務(wù)器獲取數(shù)據(jù) -----"取"; post是向服務(wù)器提交數(shù)據(jù) -----“發(fā)”
2萝毛、 form表單默認的method為"GET"
3忙灼、 get將數(shù)據(jù)按照variable = value 的形式味咳,加上URL的后面肮柜,中間用"?"連接棍弄,各個變量之間用"&"連接; post將數(shù)據(jù)不像get方式那樣
4望薄、 參數(shù)上面3的數(shù)據(jù)傳輸方式疟游,可以得出:post安全性比get方式要高
5、
URL不存在參數(shù)上限的問題痕支,HTTP協(xié)議沒有對URL長度進行限制乡摹,限制的是部分瀏覽器和服務(wù)器的限制。
IE對URL長度的限制為2083KB
get方式是通過URL傳輸?shù)臄?shù)據(jù)的采转,數(shù)據(jù)量一般在2KB左右聪廉,但是執(zhí)行效率比post高
理論上post方式?jīng)]有大小限制,HTTP協(xié)議規(guī)范也沒進行大小限制故慈。post數(shù)據(jù)沒有限制板熊,限制的是服務(wù)器處理程序的能力
2.socket和http的區(qū)別:
socket是網(wǎng)絡(luò)傳輸層的一種技術(shù),跟http有本質(zhì)的區(qū)別察绷,http是應(yīng)用層的一個網(wǎng)絡(luò)協(xié)議干签。使用socket技術(shù)理論上來講,按照http的規(guī)范拆撼,完全可以使用socket來達到發(fā)送http請求的目的容劳,只要發(fā)送的數(shù)據(jù)包按照http協(xié)議來即可
Socket和http的區(qū)別:
Socket是長連接,http是短連接
Socket是雙向通信闸度,http是單向的竭贩,只能客戶端向服務(wù)器發(fā)送數(shù)據(jù)
Socket的數(shù)據(jù)完全由自己組織,http必須按照http協(xié)議來發(fā)送
3.display有哪些值莺禁?說明他們的作用留量。position的值relative和absolute定位原點是?absolute與fixed共同點與不同點哟冬?
1楼熄、display
block 象塊類型元素一樣顯示。
none 缺省值浩峡。象行內(nèi)元素類型一樣顯示可岂。
inline-block 象行內(nèi)元素一樣顯示,但其內(nèi)容象塊類型元素一樣顯示。
list-item 象塊類型元素一樣顯示,并添加樣式列表標記翰灾。
2缕粹、position
absolute 生成絕對定位的元素,相對于 static 定位以外的第一個父元素進行定位。
fixed (老IE不支持) 生成絕對定位的元素,相對于瀏覽器窗口進行定位预侯。
relative 生成相對定位的元素,相對于其正常位置進行定位致开。
static 默認值。沒有定位,元素出現(xiàn)在正常的流中
inherit 規(guī)定從父元素繼承 position 屬性的值萎馅。
*(忽略 top, bottom, left, right z-index 聲明)
absolute與fixed共同點與不同點
A双戳、共同點:
1.改變行內(nèi)元素的呈現(xiàn)方式,display被置為block;
2.讓元素脫離普通流,不占據(jù)空間;
3.默認會覆蓋到非定位元素上;
B、不同點:
absolute的”根元素“是可以設(shè)置的,而fixed的”根元素“固定為瀏覽器窗口糜芳。
當你滾動網(wǎng)頁,fixed元素與瀏覽器窗口之間的距離是不變的飒货。
display:none和visibility:hidden的區(qū)別魄衅?
display:none 隱藏對應(yīng)的元素,在文檔布局中不再給它分配空間,它各邊的元素會合攏,就當他從來不存在。
visibility:hidden 隱藏對應(yīng)的元素,但是在文檔布局中仍保留原來的空間塘辅。
3.事件委托---- 優(yōu)點消耗內(nèi)存大,處理速度快
document.onclick,這個示例把事件委托放到了document上,即點擊document就直接觸發(fā)我們相應(yīng)的事件晃虫。
document.onclick = function(event){
var event = event || window.event; //IE doesn't pass in the event object
var target = event.target || event.srcElement; //IE uses srcElement as the target
switch(target.id){
case "help-btn":
openHelp();
break;
case "save-btn":
saveDocument();
break;
case "undo-btn":
undoChanges();
break;
//如果有其元素需要處理點擊事件, 只需要在這里添加不同的case分支就行。
}
};
4.模擬http請求--JavaScript請求一個HTML文件, test.html, 文件的文本內(nèi)容為"I'm a test.",
<script type="text/javascript" language="javascript">
var http_request = false;
function makeRequest(url) {
http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){}
}
}
if (!http_request) {
alert('Giving up :( Cannot create an XMLHTTP instance');
return false;
}
http_request.onreadystatechange = alertContents;
http_request.open('GET', url, true);
http_request.send(null);
}
function alertContents() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
alert(http_request.responseText);
}else{
alert('There was a problem with the request.');
}
}
}
</script>
<style>
.testbtn{ cursor: pointer; text-decoration: underline;}
</style>
<span class='testbtn' onclick="makeRequest('test.html')">Make a request</span>
5.對于js中的數(shù)組去重的幾種方式
//方法一
Array.prototype.unique1 = function () {
var n = []; //一個新的臨時數(shù)組
for (var i = 0; i < this.length; i++) //遍歷當前數(shù)組
{
//如果當前數(shù)組的第i已經(jīng)保存進了臨時數(shù)組扣墩,那么跳過哲银,
//否則把當前項push到臨時數(shù)組里面
if (n.indexOf(this[i]) == -1) n.push(this[i]);
}
return n;
}
-------------------------------------------------------------------------------
//方法二
Array.prototype.unique2 = function()
{
var n = {},r=[]; //n為hash表,r為臨時數(shù)組
for(var i = 0; i < this.length; i++) //遍歷當前數(shù)組
{
if (!n[this[i]]) //如果hash表中沒有當前項
{
n[this[i]] = true; //存入hash表
r.push(this[i]); //把當前數(shù)組的當前項push到臨時數(shù)組里面
}
}
return r;
}
-------------------------------------------------------------------------------
//方法三
Array.prototype.unique3 = function()
{
var n = [this[0]]; //結(jié)果數(shù)組
for(var i = 1; i < this.length; i++) //從第二項開始遍歷
{
//如果當前數(shù)組的第i項在當前數(shù)組中第一次出現(xiàn)的位置不是i呻惕,
//那么表示第i項是重復(fù)的荆责,忽略掉。否則存入結(jié)果數(shù)組
if (this.indexOf(this[i]) == i) n.push(this[i]);
}
return n;
}