-
js查看全部
-
原始類型:1、string;2、object;3、number;
查看全部 -
特殊運算符查看全部
-
不能改變已經創(chuàng)建出的實例的指向,改變的只是?prototype。如果?prototype?的指針變化,不會影響之前創(chuàng)建的實例已經有的指針,之前實例的指針還是指向原來創(chuàng)建他時的?prototype?的指針
查看全部 -
將變量num變成數(shù)字: num - 0
將變量num變成字符串:num + ''
查看全部 -
嗚嗚嗚嗚
查看全部 -
JavaScript的數(shù)據類型
????弱類型特性:定義的時候不指定數(shù)據類型,在使用的時候賦值什么類型的數(shù)據就是什么類型的數(shù)據類型。
????????????????????????32 +32? ?// 64? ?
????????????????????????"32" + 32? //"3232"
????????????????????????"32" - 32? //0
????原始類型:number、string、boolean、nul、undefined
????對象類型:對象、函數(shù)、數(shù)組、日期。。。
查看全部 -
上面就是對this的介紹,還有一個內容是bind,是傳入對象的一個call(類似吧),這個不太懂所以沒寫
查看全部 -
上面就是
查看全部 -
//函數(shù)在js中是作為一個函數(shù)對象被使用的,所以你也可以給函數(shù)加一些屬性值來表達一定的含義,另外就是函數(shù)是有不同的作用域和一個很重要的參數(shù)argument的
undefined
//函數(shù)中重點要講述的就是this、arguments、作用域和不同函數(shù)調用方式以及不同的函數(shù)創(chuàng)建方式
undefined
//對于函數(shù)的調用
undefined
//1、可以直接調用:foo()
undefined
//2、函數(shù)也可以作為對象上的一個方法被調用,object.method()
undefined
//3、可以作為一個構造器被調用,new Foo()
undefined
//4、可以用function.prototype上的一些屬性例如call/apply/bind來調用
查看全部 -
感覺可以怎么理解呢,就是首先就是一個指定上下文的功能,這個具體什么功能還要先介紹完AO和VO。
和C一樣,你再編譯的時候引入庫的時候是要把一些函數(shù)先聲明調用一波的。就是說會先創(chuàng)建一個函數(shù)的聲明,然后會對變量進行聲明,而且要注意的是每一個函數(shù)都會自己創(chuàng)建一個VO然后嵌套在global的VO里面,然后會對變量進行聲明。所以順序就是1、函數(shù)2、變量,而且變量一開始會被寫成undefined
然后就是一些關于明名的問題,如果明名的函數(shù)與前面重復,就會覆蓋,如果變量重復就會忽略。
你這個代碼在編譯的時候就會進行上面的操作,創(chuàng)建一個樹或者說一個json對象(不可見)。先找到所有的函數(shù)、變量,然后再執(zhí)行其他的操作,所以命名重復時候會出現(xiàn)變量丟失。
查看全部 -
、
//對于作用域,主要用三種,一種是全局作用域
undefined
//全局作用域可以存在于直接定義,即內部函數(shù)之外的地方,也可以在for里面,在c里面是有塊級作用域的,所以定義在for里面的變量拿到外邊是不可以用的,但是js可以,
undefined
//還有就是函數(shù)作用域,這個作用域是只能在函數(shù)里面用
undefined
//最后就是eval
undefined
//!!沒有塊級
undefined
//還有就是利用函數(shù)封裝作用域的方法,利用匿名函數(shù)的作用
undefined
//匿名函數(shù)可以體現(xiàn)出塊的身影
undefined
(function(){
? ? var a = 1;
? ? ?
})
? (){
? ? var a = 1;
? ? ?
}
!function(){
? ? var a,b;
}()
true
查看全部 -
//關于閉包常見的錯誤:循環(huán)閉包
undefined
//要注意在第一個例子里面最后得到的全是4,因為這個for是全部執(zhí)行之后的結果,你在編譯完成之后執(zhí)行就已經是4了,然后你觸發(fā)事件的時候也全是4,也就是說你沒保留住原來的i
undefined
//在第二個里面它定義的匿名函數(shù)里面是可以成功保留住i
undefined
//那個i會取自每一次bi bao的i
undefined
?//在第二張圖里面我們可以看到bibao的另一個好處就是說你先通過export將它的訪問權限定義在外,然后就可以通過export去訪問里面的函數(shù),但是不可能直接訪問
undefined
//而且export只能訪問一些方法,不能訪問全部的變量
undefined
//但是bibao也是有缺點的,因為你定義的變量會被一直被存儲,因為不知道你什么時候還會用,由此就會有內存的泄漏和性能消耗等缺點
查看全部 -
//數(shù)組方法下
undefined
var arr = [1,2,3,4,5];
undefined
arr.forEach(function(x,index,a){
? ??
? ? console.log(x+'|'+index+'|'+(a===arr));
})
VM6289:3 1|0|true
VM6289:3 2|1|true
VM6289:3 3|2|true
VM6289:3 4|3|true
VM6289:3 5|4|true
undefined
//有些老的版本是不支持foreach方法的
undefined
arr.map(function(x){
? ? return x+10;
})
(5) [11, 12, 13, 14, 15]
//map是一個映射的函數(shù),在函數(shù)里面可以傳出一個數(shù)組內部的值然后return回去一個操作,在這個操作下面會創(chuàng)建一個新的數(shù)組,而且原來的數(shù)組是不會發(fā)生改變的
undefined
arr.filter(function(x,index){
? ? return (x%1)&&(x%x);
})
[]
arr.filter(function(x,index){
? ? return (x%2);
})
(3) [1, 3, 5]
//fiter是一個過濾器,它的作用就是將原來的數(shù)組里面的一些值進行一次過濾得到我們想要的值
undefined
arr.every(function(x){
? ? return x<10;
})
true
arr.some(function(x){
? ? return x===3;
}
)
true
//every和some是對數(shù)組里面所有的值進行一個遍歷,然后判斷是否滿足某一個條件,every的用法類似于邏輯與,必須所有的都滿足才行,而some只要求其中一個滿足就可以
undefined
arr.reduce(function(x,y){
console.log(x+'|'+y);
return x>y?x:y;
})
VM6798:3 1|2
VM6798:3 2|3
VM6798:3 3|4
VM6798:3 4|5
5
//reduce是一個比較復雜的辦法,可以理解成是一個迭代的過程,先是選取兩個數(shù),然后操作一波得到一個數(shù),然后將這個數(shù)字作為下一次迭代的第一個數(shù)
undefined
arr.reduceRight(function(x,y){
? ??
? ??
console.log(x+'|'+y);
return x>y?x:y;
})
VM6904:4 5|4
VM6904:4 5|3
VM6904:4 5|2
VM6904:4 5|1
5
arr.indexOf(2)
1
arr.indexOf(1,-1)
-1
//第二個參數(shù)是從哪里開始找,這個永遠都是向右找,所以第二個結果才會返回-1
undefined
arr.lastIndexOf(1,-1)
0
//這回就找的到了
undefined
//在array構造器上定義了一個判斷是否是array的方法叫做isArray
undefined
Array.isArray(arr)
true
//因為是定義在構造器上面的所以只能在上面用
undefined
//當然我們也有一些其他的辦法
undefined
arr instanceof Array
true
arr.constructor ===Array
true
//但是構造器屬性是可以繼承而來的,所以一般來說也不一定準確
查看全部 -
//這一小節(jié)我們會介紹數(shù)組的一些方法
undefined
//對于對象,我們之所以可以調用它下面的很多的方法,是因為它的原型鏈上有一個object.prototype這個對象,它下面包含著所有的方法(你也可以稱之為屬性)
undefined
//對于數(shù)組,我們也有一個array.prototype這個對象下的方法,當然我們一般來說是用es5的方法,因為老的版本ie678只支持一些非es5的放啊
undefined
//1、join方法,將數(shù)組轉換成字符串,選擇以什么方式將數(shù)組輸出
undefined
var arr = [1,2,3];
undefined
arr
(3) [1, 2, 3]
arr.join('_')
"1_2_3"
//其實join最廣泛的一個應用還是重復
undefined
function repeatString(str,n){return new Array(n+1).join(str);}
undefined
repeatString('a',3)
"aaa"
repeatString('Hi',4)
"HiHiHiHi"
//2、reverse方法是將數(shù)組倒過來,它也會影響到原來的arr
undefined
arr.reverse()
(3) [3, 2, 1]
arr
(3) [3, 2, 1]
//3、sort函數(shù),實際上我們對JavaScript的里面有誤解,默認情況下它是按照字符的順序排列,而且還是將每個元素看作一個字符串,然后判斷字符串的第一個元素的大小然后排序.
undefined
arr2 = ['a','c','b']
(3) ["a", "c", "b"]
arr2.sort()// 而且原數(shù)組也會被修改
(3) ["a", "b", "c"]
arr.sort()
(3) [1, 2, 3]
//所以我們要給這個數(shù)組加入一些方法函數(shù)
undefined
6164:1 Unchecked runtime.lastError: The message port closed before a response was received.
arr.sort(function(a,b){return a-b;//這個的意思是a大于b的話返回true,表示需要交換
})
(3) [1, 2, 3]
//而且上面可以看到直接在方法里面加函數(shù)的話不需要定義名字
undefined
//再舉例
undefined
arr4 = [{age:1},{age:45},{age:70}];
VM12181:1 Uncaught SyntaxError: Invalid or unexpected token
arr4 = [{age:1},{age:45},{age:70}];
(3) [{…}, {…}, {…}]
arr4.sort(function(a,b){return a.age-b.age;})
(3) [{…}, {…}, {…}]0: {age: 1}1: {age: 45}2: {age: 70}length: 3__proto__: Array(0)
arr4
(3) [{…}, {…}, {…}]
arr4.forEach(function(item){
? ? console.log(item.age);
})
VM12460:2 1
VM12460:2 45
VM12460:2 70
undefined
//上面是一個foreach的方法
undefined
//4、concat方法
undefined
//concat方法是將數(shù)組進行合并,這個和上面幾個方法的不同點在于它并不會改變原來的數(shù)組,而是會產生一個新的數(shù)組,原來的數(shù)組并不會被修改
undefined
arr.concat([4,5])
(5) [1, 2, 3, 4, 5]
arr.concat([1,2],[4,[56,4]])
(7) [1, 2, 3, 1, 2, 4, Array(2)]
//上面可以看見會將括號里面的第一層數(shù)組拉平,但是里面嵌套的數(shù)組只會被當作元素
undefined
//5、slice方法是返回某個元素的一個片段,是一個左臂右開的區(qū)間,這個函數(shù)是支持負數(shù)索引的
undefined
arr = [1,2,3,4,5]
(5) [1, 2, 3, 4, 5]
arr.slice(1,3)
(2) [2, 3]
//slice也不會對原數(shù)組進行修改
undefined
//6、splice數(shù)組拼接,非常雞肋
undefined
arr
(5) [1, 2, 3, 4, 5]
//function1
undefined
arr.splice(2)
(3) [3, 4, 5]
arr
(2) [1, 2]
// 愿數(shù)組被修改,表示從第二個元素一直到尾部全部切下來扔掉
undefined
//function2:添加第二個參數(shù),表示切下來幾個
undefined
var arr = [1,2,3,4,5];
undefined
arr.splice(2,2,'a','b')//這個懶得寫function3了,基本就是因為是連續(xù)切的,你切下來的空白可以用另外一個數(shù)組補上
(2) [3, 4]
arr
(5) [1, 2, "a", "b", 5]
查看全部
舉報