協議+域名+端口徹底相同才叫同源 如下三種行爲受到限制: (1) 沒法讀取非同源網頁的 Cookie、LocalStorage 和 IndexedDB。php
(2) 沒法接觸非同源網頁的 DOM。css
(3) 沒法向非同源地址發送 AJAX 請求(能夠發送,但瀏覽器會拒絕接受響應)。html
解決: cookie 瀏覽器經過document.domain屬性來檢查是否同源。 A 網頁的網址是http://w1.example.com/a.html,B 網頁的網址是http://w2.example.com/b.html(一級域名同樣,二級不同)前端
// 兩個網頁都須要設置
document.domain = 'example.com';
複製代碼
這時候a設置一個cookie,b就能夠讀到這個cookiehtml5
AJAX: jsonp CORS(「跨域資源共享」):Access-Control-Allow-Originreact
Content-Type: text/html; charset=utf-8webpack
XSS(Cross-site scripting)即跨站點script 舉例web
<script>console.log(document.cookie)</script>
,這段代碼被上傳到服務器。產生緣由: 前端的代碼在顯示留言的時候,操做DOM的時候innerHTML方法,或者用了jQuery中的$p.html(content)方法。面試
解決辦法:ajax
innerText
(jQuery就是用text()
方法,不要本身)< >'' '
這些可疑的符號轉義,如<
變成 <
(HTML實體)(CSRF的全名爲Cross-site request forgery) 僞造跨站請求 過程:
對於get請求能夠很輕鬆的攻擊,對於post,攻擊者可誘導用戶進入帶 Form 表單可用POST方式提交參數的頁面。
解決方法:
解決方法: 一Token字符串驗證。 總結:
二讓用戶本身填寫驗證碼
<head></head>
,script標籤寫在body閉合標籤前面,先加載內容與樣式。three.js 封裝了webGL的API
Array.isArray() Array.isArray(arr) // true
2.實例方法 valueOf(),toString() arr.valueOf() // [1, 2, 3]返回自己 arr.toString() // "1,2,3,4,5,6"
push(),pop() shift()//刪除第一個元素
join()//變成一個字符串
concat()//數組合並
reverse()//顛倒數組
slice(起始位置,終止位置)//[起始位置,終止位置)減下來一部分(一小片)數組,一小片,返回一個新數組,原數組不變
splice方法用於刪除原數組的一部分紅員,並能夠在刪除的位置添加新的數組成員,返回值是被刪除的元素。注意,該方法會改變原數組。(裁剪下來)
var a = ['a', 'b', 'c', 'd', 'e', 'f'];
a.splice(4, 2) // ["e", "f"]
a // ["a", "b", "c", "d"]
複製代碼
從下標4開始,日後刪2個
sort()//按字典序排序,能夠傳入函數做爲參數規定排序的方式。直接改變了原數組
遍歷: map()//映射,並返回一個新數組,裏面函數能夠調整數組的值
forEach()//forEach方法不返回新數組,只用來遍歷數據
filter()//過濾一個數組 [1, 2, 3, 4, 5].filter(function (elem) { return (elem > 3); }) // [4, 5]
indexOf()//indexOf方法返回給定元素在數組中第一次出現的位置. 若是沒有出現則返回-1
屬性:length
方法: var s = new String('abc'); s.charAt(1) // "b" 這個方法徹底能夠用數組下標替代。 'abc'.charAt(1) // "b" 'abc'[1] // "b"
concat()
slice()減一小塊下來,返回新字符串,[起始位置,結束位置) substring()同樣,優先使用slice() substr()同樣,優先使用slice()
indexOf() 用於肯定一個字符串在另外一個字符串中第一次出現的位置,返回結果是匹配開始的位置。若是返回-1,就表示不匹配
trim()去除字符串兩端的空格,返回新字符串
toLowerCase() toUpperCase() 變換大小寫
split()將字符串分割爲數組 'a|b|c'.split('|') // ["a", "b", "c"],與jion相對應
Math.floor(),Math.ceil()地板值,天花板值,相對於數軸的。
Math.round()四捨五入
Math.random() [0,1)的隨機數
let a = [1,1,1,2,2.2,12,14,23,443,5,5,435,45656768,4,6,7,5,8,33,67,86,2,86,67,845,4,24,5342,1,2]
function quickSort (arr){
if(arr.length<=1) {return arr}
// let midIndex = Math.floor(arr.length/2)
// let midItem = arr.splice(0,1)[0]
let midItem = arr[0]
let left = []
let right = []
for(i = 0;i<arr.length;i++){
if(i!==0){//跳過中間值
if(arr[i]<midItem){
left.push(arr[i])
}else{
right.push(arr[i])
}
}
}
return quickSort(left).concat([midItem],quickSort(right))
}
console.log(quickSort(a))
複製代碼
let a=[1,1,1,2,2,2,3,3,3,3,undefined,'xxx','xxx','3','3','undefined']
function f(array){
let hash = {}
let returnArr = []
for(let i=0;i<array.length;i++){
let arrItemStr = (typeof array[i]) + array[i] + ""//防止undefined和'undefined'轉換成字符串而後衝突
if(hash[arrItemStr]!==1){//說明未進入hash
hash[arrItemStr]=1
returnArr.push(array[i])
}
}
// console.log(hash)
return returnArr
}
console.log(f(a))
//2:
console.log(Array.from(new Set(a)))
複製代碼
瞭解let const 解構賦值 箭頭函數 promise
d3.js echarts,2d的柱狀圖,折線圖,餅圖,3d的有3d地球模型,3d柱狀圖,3d地圖
接下來的學習目標就是react
我是一名軟件工程專業的大四學生,由於對前端感興趣,因此自學前端半年多,對技術頗有熱情,想找一份工做一遍工做一邊提高本身的技術能力。
string.slice( array.join( indexOf()
僞類: :hover :focus :active :visited :link :first-child ,:last-child ,nth-child()用來選取不一樣狀態的元素 僞元素: ::before ::after ,實際存在的元素,用content:''來作小三角形,小圓點
html5標籤header footer main artical section aside nav,有點:若是都用div或者span來着,那麼不清楚每一部分的含義,語義化,結構清晰,提升可讀性。有利於seo,好比標題是h1,爬蟲爬取數據會優先爬取標題。
DOCTYPE 規定使用哪一個版本的html 使用html5
塊級元素:div p header footer main artical section aside nav 行內元素:span、a、b、i,strong 行內塊元素:img,input,button
function f() {
console.log(this.x);
}
f();
var x = 2;
var a = {x: 1};
a.f = f;
var b = a.f;
a.f();
b();
複製代碼
undefined、一、2 this實質:當前函數所在做用域
Array.isarray()