协议+域名+端口彻底相同才叫同源 如下三种行为受到限制: (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()