- 閉包
function f1(){
var n=999;
function f2(){
alert(n);
}
return f2;
}
var result=f1();
result(); // 999
//f2函數,就是閉包
閉包就是在函數裏面創建一個函數,創建的函數可以訪問外部函數的變量function aa(){
console.log(loc)
}
function bb(){
var loc = "西魚";
aa();
}
bb(); //因爲是調用aa,aa其實是在外部執行的所以報錯
function aa(data){
console.log(loc)
}
function bb(){
var loc = "西魚";
aa(loc);
}
bb();
//可以傳參進去 可以打印
function bb(){
var loc = "西魚";
function aa(){
console.log(loc)
}
aa();
}
bb();
// 閉包
var a = {};
console.log(a.prototype); //undefined
console.log(a.__proto__); //Object {}
var b = function(){}
console.log(b.prototype); //b {}
console.log(b.__proto__); //function() {}
function A(){
this.name="zhangsan";
}
A.prototype.getName=function(){
return this.name;
}
function B(){
this.age=20;
}
B.prototype=new A();
//子類型有時候需要重寫超類型中的某個方法,或者需要添加母類型中不存在的某個方法。但不管怎
樣,給原型添加方法的代碼一定要放在替換原型的語句之後。
B.prototype.getAge=function(){
return this.age;
}
var x=new B();
console.log(x.getName());
console.log(x.getAge());
console.log(A.prototype)
B繼承A,x是B的實例,所以x也繼承A,可以調用A中的屬性和方法。
{
let a = 10; var b = 1;
}
a // ReferenceError: a is not defined.
b // 1
.clearfix:after{
content:"";//設置內容爲空
height:0;//高度爲0
line-height:0;//行高爲0
display:block;//將文本轉爲塊級元素
visibility:hidden;//將元素隱藏
clear:both//清除浮動
}
5.ajax清除瀏覽器緩存$.ajax({
url:'www.haorooms.com',
dataType:'json',
data:{},
beforeSend: function(xmlHttp){ xmlHttp.setRequestHeader("If-Modified-Since","0"); xmlHttp.setRequestHeader("Cache-Control","no-cache"); },
success:function(response){ //操作 }
async:false
});
方法二,直接用cache:false$.ajax({
url:'www.haorooms.com',
dataType:'json',
data:{},
cache:false,
ifModified :true ,
success:function(response){
//操作
}
async:false
});
- link屬於html標籤,而@import是css提供的。
- 頁面被加載時,link會同時被加載,而@import引用的css會等到頁面加載結束後加載。
- link是html標籤,因此沒有兼容性,而@import只有IE5以上才能識別。
- link方式樣式的權重高於@import的。
ajax 請求過程:創建 XMLHttpRequest 對象、連接服務器、發送請求、接收響應數據;
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
(3)服務器響應:使用 XMLHttpRequest 對象的 responseText()獲得字符串形式的響應數據) 或 responseXML (獲得 XML 形式的響應數據)屬性
onreadystatechange 事件
當請求被髮送到服務器時,我們需要執行一些基於響應的任務。
每當 readyState 改變時,就會觸發 onreadystatechange 事件。
readyState 屬性存有 XMLHttpRequest 的狀態信息。
下面是 XMLHttpRequest 對象的三個重要的屬性:
只有當readState等於4且狀態爲200的時候,纔會有返回值
get和post區別
<script>
標籤,然後利用<script>
的src 不受同源策略約束來跨域獲取數據。9.同源策略
10.js異步編程
(1)使用setTimeout
// 任務一
function fn1() {
console.log(3)
setTimeout(function() {
console.log(1)
}, 0)
}
// 任務二
function fn2() {
console.log(2)
}
fn1()
fn2()
輸出3,2,1
作者:大春春
鏈接:https://www.jianshu.com/p/ea5dc6a30ff2
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
優點:簡單明瞭;
缺點:①、耦合嚴重;②、容易陷入回調地獄
PS:回調地獄例子(該操作只有三步,如果是十步,嵌套將會非常嚴重)
(2)promise
then
和catch
,then
方法第一個參數是resolve狀態時執行的回調,第二個參數則是reject狀態時執行的回調,而catch則是then
中有一環是reject
就執行的回調函數function getData(){
let promise = new Promise((resolve, reject) => {
// AJAX獲取數據。。。。
if(success){
// 成功時執行
resolve(fn1)
}else{
// 失敗時執行
reject(fn2)
}
})
return promise
}
getData().then(fn1).catch(fn2)
作者:大春春
鏈接:https://www.jianshu.com/p/ea5dc6a30ff2
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
11.js延遲加載方法有哪些
使用setTimeout延遲方法的加載時間
讓js最後加載
12.map(parseint)
13webpack 實現原理
全局安裝 webpack: npm install -g wabpack
webpack主要就是模塊化、處理依賴 和 打包-
14跨域解決辦法 字符串和數組轉換 同源 數組常見操作
移動端瀏覽器兼容問題
在移動端修改難看的點擊的高亮效果,iOS和安卓下都有效:
* {-webkit-tap-highlight-color:rgba(0,0,0,0);}