摘要:基本點(diǎn)數(shù)據(jù)結(jié)構(gòu)本來制作的是腦圖,思維導(dǎo)圖,導(dǎo)出來不好上傳,就這樣吧基本的數(shù)據(jù)類型區(qū)別區(qū)別表示聲明了一個變量,沒有初始化的情況下輸出該變量為以及未聲明直接一個未聲明的變量結(jié)果也為中的變量是弱類型的,中聲明一個即使未賦值也會自動初始化為類型的并
基本點(diǎn) 數(shù)據(jù)結(jié)構(gòu)
本來制作的是腦圖,思維導(dǎo)圖,導(dǎo)出來不好上傳,就這樣md+png吧
js 基本的數(shù)據(jù)類型 Undefinedundefined,null區(qū)別:
1.undefined表示聲明了一個變量var a,沒有初始化的情況下輸出該變量為undefined以及未聲明直接typeof一個未聲明的變量結(jié)果也為undefined;js中的變量是弱類型的,java中聲明一個int即使未賦值也會自動初始化為int類型的0;并且如果一個變量未聲明,直接輸出該變量會報錯;
2.null表示Object類型的空引用;
3.typeof undefined="undefined"
typeof null="object"
Number(undefined)=NaN
Number(null)=0
null==undefined為true
4.typeof輸出的都是字符串,包括:undefined,object(對象和數(shù)組),string,number,boolean,function
遞增遞減遇只對數(shù)值感興趣“1”也會轉(zhuǎn)換成1;而普通的字符串都為NaN;
當(dāng)然所有的運(yùn)算遇到boolean值的都:false=0;true=1;
前置遞增(減)先增或減再其他操作,后置遞增(減),先執(zhí)行其他操作再對數(shù)值增或減
+對數(shù)值無影響,非數(shù)值會Number()下,對象會valueOf()或toString()下再Number()
-先進(jìn)行+相同的轉(zhuǎn)換再取負(fù)
對同為數(shù)值的兩個操作數(shù)加法運(yùn)算
只要有一個是字符串就變成了拼接操作
~:按位非,取負(fù)數(shù)減1
&:按位與,同為1真則為1真,其余為0假
|:按位或,有一個為1真則1真
^:按位異或,只有一個1時結(jié)果為
<<:左移
:有符號右移
:無符號右移,對負(fù)數(shù)來說無符號右移會得到很大的jieguo
!非
&&與
||或
!a,當(dāng)a為何值時此條件為真;當(dāng)a為false或者Boolean()后為false;
Boolean(false) false
Boolean(0) false
Boolean(NaN) false
Boolean(undefined) false
Boolean(null) false
Boolean("") false
參數(shù)值和arguments偽數(shù)組存的值同步
嚴(yán)格模式下修改參數(shù)值,arguments內(nèi)的值不變,arguments值和執(zhí)行函數(shù)時傳入的參數(shù)個數(shù)一致
偽數(shù)組不具有真正數(shù)組的操作方法,有l(wèi)ength屬性,也可以訪問每一個元素
Array.isArray(arguments)為false
檢測數(shù)組的方法:
Array.isArray()
arr instanceof Array;此方法缺陷是不同框架創(chuàng)建的數(shù)組,分別是不同Array的實(shí)例
返回值更改后數(shù)組的長度;原數(shù)組被更改
var a=[1,2,3];a.unshift(0);
4
var a=[1,2,3];a.unshift(0);a
[0, 1, 2, 3]
返回刪除的元素組成的shuzu
var a=[0,1,2,3];a.splice(4,0,5,6,7);a
[0, 1, 2, 3, 5, 6, 7]
var a=[0,1,2,3];a.splice(4,0,5,6,7);
[]
只是連接數(shù)組,不改變原數(shù)組;返回新數(shù)組
var a=[1,2,3];a.concat([0]);
[1, 2, 3, 0]
var a=[1,2,3];a.concat([0]);a
[1, 2, 3]
返回第一個元素即刪除的元素;改變原來的數(shù)組
var a=[1,2,3];a.shift();
1
var a=[1,2,3];a.shift();a
[2, 3]
var a=[1,2,3];a.pop();
3
var a=[1,2,3];a.pop();a
[1, 2]
返回刪除元素組成的數(shù)組;原數(shù)組gaibia
var a=[0,1,2,3];a.splice(0,3);
[0, 1, 2]
var a=[0,1,2,3];a.splice(0,3);a
[3]
刪除該位置元素,替換上新元素;返回刪除元素組成的數(shù)組,修改原shuzu
var a=[1,2,3];a.splice(0,1,0);
[1]
var a=[1,2,3];a.splice(0,1,0);a
[0, 2, 3]
返回該元素第一次出現(xiàn)的位置
var a=[1,2,3];a.indexOf(1);
0
第一個參數(shù)從哪開始,第二個參數(shù)數(shù)幾個數(shù);返回這幾個數(shù)組成的數(shù)組,不改變原數(shù)組;只有一個參數(shù)的情況下,取到最后
var a=[1,2,3];a.slice(0);
[1, 2, 3]
var a=[1,2,3];a.slice(0,2);
[1, 2]
var a=[1,2,3];a.slice(0,2);a
[1, 2, 3]
有一項(xiàng)符合要求就返回true
每一項(xiàng)都符合要求,最后返回tru
返回符合條件的元素組成的shuz
返回新數(shù)組,對應(yīng)每一項(xiàng)都操作后的新數(shù)組
無返回值
var a=[1,2,3,4],b=[];a.forEach(function(item,index,array){b[index]=item-1});b
[0, 1, 2, 3]
var a=[4,1,2,5,3];a.reverse()
[3,5,2,1,4]
結(jié)果是以逗號隔開的字符串
返回以自定義符號隔開的字符串
var str="1,2,3";var arr=str.split(",");
Function指向擁有該arguments對象的函數(shù)
遞歸函數(shù)會用到Arguments對象的callee屬性
當(dāng)在全局作用域調(diào)用函數(shù),this指向window的引用
當(dāng)某個對象調(diào)用時,就指向?qū)ο蟮囊?br>var a={color:"red",getA:function(){console.log(this.color);}};var b=a.getA;b()
undefined
var color="window";var getA=function(){console.log(this.color)};var o={color:"o"};o.getA=getA;o.getA()
o
閉包概念:一個函數(shù)內(nèi)部創(chuàng)建另一個函數(shù);內(nèi)部函數(shù)可以訪問包含函數(shù)的變量外部無法訪問內(nèi)部函數(shù)的變量;
閉包優(yōu)缺點(diǎn):封裝性,減少全局變量污染;對外部變量的引用導(dǎo)致垃圾回收無法清除變量造成內(nèi)存泄漏
哪些操作會造成內(nèi)存泄漏
閉包;循環(huán)引用;setTimeout第一個參數(shù)為字符串
垃圾回收的兩種方式:
標(biāo)記清除,垃圾回收器運(yùn)行時給存儲在內(nèi)存的所有變量都加上標(biāo)記,然后去掉環(huán)境中的變量和被環(huán)境中變量引用著的變量的標(biāo)記,最后將仍舊被標(biāo)記著的變量清除釋放內(nèi)存(閉包就是因?yàn)樽兞咳耘f被引用著無法清除)
引用計數(shù),跟蹤每個變量被引用的次數(shù),當(dāng)一個變量被賦值給另一個變量時,該變量就被引用1次,當(dāng)賦值另外一個值時,該變量被引用次數(shù)減一(如果存在兩個變量循環(huán)引用,引用次數(shù)一直2,不能清除)
調(diào)用當(dāng)前函數(shù)的函數(shù)的引用
var outter=function (){inner()};var inner=function(){console.log(arguments.callee.caller)};outter();
function (){inner()}
undefined
var outter=function (){inner()};var inner=function(){console.log(inner.caller)};outter();
function (){inner()}
嚴(yán)格模式下,caller屬性值不能修改
函數(shù)需要接收的命名參數(shù)的個數(shù)
arguments表示實(shí)例化時傳入的參數(shù)偽數(shù)組
將一個類的實(shí)例賦值給另一個類的原型形成原型鏈;
構(gòu)造函數(shù)、實(shí)例、原型之間的關(guān)系:每一個構(gòu)造函數(shù)都有一個原型,每一個原型對象都有一個指針指向構(gòu)造函數(shù),每一個構(gòu)造函數(shù)的實(shí)例都有一個內(nèi)部屬性指向原型對象
原型鏈繼承導(dǎo)致引用類型的屬性被共享,并且子類實(shí)例不能向父類傳遞參數(shù)
function parent(){this.name="姓";this.friends=["w","f"];}
function child(){}
child.prototype=new parent();
var child1=new child();
var child2=new child();
console.log(child1.name);
console.log(child2.name);
VM15914:6 姓
VM15914:7 姓
function parent(){this.name="姓";this.friends=["w","f"];}
function child(){}
child.prototype=new parent();
var child1=new child();
var child2=new child();
console.log(child1.friends);child1.friends.push("m");
console.log(child2.friends);
VM15915:6 ["w", "f"]
VM15915:7 ["w", "f", "m"]
方法在每個子類原型上都要創(chuàng)建一遍,無法達(dá)到方法共享
function parent(name){this.name=name;this.friends=[1,2,3]}
function child(name){parent.call(this,name);}
var child1=new child("1");
var child2=new child("2");
console.log(child1.name);
child1.name="3";
console.log(child1.name);
console.log(child2.name);
console.log(child1.friends);
child1.friends.push("m");
console.log(child1.friends);
console.log(child2.friends);
VM15918:1
VM15918:7 3
VM15918:8 2
VM15918:9 [1, 2, 3]
VM15918:11 [1, 2, 3, "m"]
VM15918:12 [1, 2, 3]
call,new兩次導(dǎo)致實(shí)例和原型上都存在相同屬性
function parent(name){this.name=name;this.friends=[1,2,3]}
parent.prototype.getFriends=function(){console.log(this.friends);};
function child(name){parent.call(this,name)}
child.prototype=new parent();
var child1=new child();
var child2=new child();
child1.friends.push(4);
child1.getFriends();
child2.getFriends();
VM15920:[1, 2, 3, 4]
VM15920:[1, 2, 3]
function obj(o){ function f(){} f.prototype=o; return new f(); } function createChild(original){ var clone=obj(original); clone.say=function(){ console.log("hi"); }; return clone; } var parent={ name:"p", friends:[1,2,3] }; var child1=createChild(parent); var child2=createChild(parent); child1.friends.push(4); console.log(child1.friends); console.log(child2.friends);
VM15922:20 [1, 2, 3, 4]
VM15922:21 [1, 2, 3, 4]
function obj(o){ function f(){} f.prototype=o; return new f(); } var parent={ name:"p", friends:[1,2,3] }; var child1=obj(parent); var child2=obj(parent); child1.friends.push(4); console.log(child1.friends); console.log(child2.friends);
VM15921:13 [1, 2, 3, 4]
VM15921:14 [1, 2, 3, 4]
function obj(o){ function f(){} f.prototype=o; return new f(); } function inheritPrototype(subType,supperType){ var prototype=obj(supperType.prototype); prototype.constructor=subType; subType.portotype=prototype; } function parent(name){ this.name=name; this.friends=[1,2,3]; } function child(name){ parent.call(this,name); } inheritPrototype(child,parent); var child1=new child("1"); var child2=new child("2"); child1.friends.push(4); console.log(child1.friends); console.log(child2.friends);
VM15923:22 [1, 2, 3, 4]
VM15923:23 [1, 2, 3]
var color={color:"red"};function a(num1,num2){console.log(this.color+num1+num2);} var b=a.bind(color,1,2);b()
VM15615:1 red12
深度克隆:
function clone(obj){
var buf=null; if(Array.isArray(obj)){ buf=[]; for(var i=0,len=obj.length;i}
數(shù)組去重定義,在Array.prototype上;但不更改原數(shù)組,返回一個新的數(shù)組
Array.prototype.unique=function(){
var hash={},r=[]; for(vari=0,len=this.length;i}
return r};
內(nèi)置對象
var a=[1,1,2,2,3,3];
a.unique();//返回的是r,a并未改變Global
parseInt(num)
parseFloat(num)
Math
方法
向下取整Math.floor(num)
向上取整Math.ceil(num)
四舍五入Math.round(num)
Math.max(1,2,3)
Math.max.apply(null,arr)
Math.min(1,2,3)
Math.random()返回0-1之間的小數(shù)
Math.floor(Math.random()*10+1);1-10之間的10個數(shù)
function selectFrom(lowerValue,upperValue){var choices=upperValue-lowerValue; return Math.floor(Math.random()*choices+lowerValue);}
selectFrom(1,5);其他方法
絕對值Math.abs(num)
平方根Math.sqrt(num)
冪運(yùn)算Math.power(num,power)num的power次冪
Math.PI
1/2的平方根Math.SQRT1_2
BOM Window.open(url,位置,大小)window.open("http://baidu.com","someFrameName","height:400,width:400,top:10,left:10,resizable:yes")
系統(tǒng)對話框
第二個參數(shù)可以是
某個窗口的名稱
已存在的窗口_self,_parent,_top,_blank( 打開一個新的標(biāo)簽頁)alert("msg")
confirm("msg")
prompt("msg","inputValue")
locationlocation屬性
?的內(nèi)容location.search
返回URL中?后的字符串location.search
"?isSave=1"
decodeURIComponent(ite)可以參數(shù)值解碼的內(nèi)容location.hash
location.hash
"#/history?eventId=gulf_p_g_home_timech_ck&eventName=%E7%82%B9%E5%87%BB%E5%87%BA%E5%8F%91%E6%97%B6%E9%97%B4&appName=%E6%BB%B4%E6%BB%B4%E5%87%BA%E8%A1%8C&fav=1"location.hostname
location.hostname
"bigdata-test.xiaojukeji.com"
location.pathname
"/ddc_action_analyse/"
location.port
""location.port
location.pathname
方法
location.assign(url)打開網(wǎng)頁==window.location=url;location.href=url;
navigator瀏覽器名稱navigator.appName
navigator.platform
navigator.plugins
screen history前進(jìn)
history(1)前進(jìn)一頁history(2)前進(jìn)兩頁
history.forward()前進(jìn)一頁
后退
history(-1)后退一頁
history.back()后退一頁
history.length===0表明用戶打開窗口后的第一個頁面
DOM 事件流事件捕獲
目標(biāo)階段
事件冒泡
html事件標(biāo)簽中加onclick="name()"
dom0級事件elem.onclick=function(){};
dom2級事件
addEventListener(事件名稱click,處理函數(shù),false表明發(fā)生在冒泡階段默然就是false)
事件委托和事件代理
ajax json 同源策略+跨域方法 html css 行內(nèi)元素 塊級元素 樣式 position+z-index opacity,rgba background-color=width+padding 垂直水平居中,flex 浮動,清除浮動 盒模型 布局 http 設(shè)計模式
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/80863.html
日界線是指日期的分界線,國際規(guī)定180度經(jīng)線,但這不是一條直線,是一條曲線又是一個別人開心ipo痛哭的日子嗚嗚嗚showImg(https://segmentfault.com/img/bVFoPX?w=631&h=632); 先講個故事,公元1世紀(jì)猶太戰(zhàn)爭,猶太人被包圍了,不想被俘虜?shù)挠率繉幙勺詺ⅲ最I(lǐng)指著最近的一個說 ‘從你開始往后數(shù),數(shù)到第三個,他就自殺,再從他下一個開始數(shù),數(shù)到第三個自殺,...
摘要:尤其是喬布斯在年發(fā)布的一篇的文章。喬布斯在里面寫下了關(guān)于的一點(diǎn)看法,說明自己為什么不使用,談到關(guān)于的一些問題,比如開放性,安全性,對于設(shè)備續(xù)航的影響,不利于觸摸屏,等等。終于,于年月日,爸爸也放棄治療了,宣布將于年正式退休。 今天為大家分享一下html5中的視頻(video)與音頻(audio)。在進(jìn)入主題之前我們先了解一下Flash與html5這兩種技術(shù)的時代背景與發(fā)展歷史。 1.前...
摘要:尤其是喬布斯在年發(fā)布的一篇的文章。喬布斯在里面寫下了關(guān)于的一點(diǎn)看法,說明自己為什么不使用,談到關(guān)于的一些問題,比如開放性,安全性,對于設(shè)備續(xù)航的影響,不利于觸摸屏,等等。終于,于年月日,爸爸也放棄治療了,宣布將于年正式退休。 今天為大家分享一下html5中的視頻(video)與音頻(audio)。在進(jìn)入主題之前我們先了解一下Flash與html5這兩種技術(shù)的時代背景與發(fā)展歷史。 1.前...
摘要:尤其是喬布斯在年發(fā)布的一篇的文章。喬布斯在里面寫下了關(guān)于的一點(diǎn)看法,說明自己為什么不使用,談到關(guān)于的一些問題,比如開放性,安全性,對于設(shè)備續(xù)航的影響,不利于觸摸屏,等等。終于,于年月日,爸爸也放棄治療了,宣布將于年正式退休。 今天為大家分享一下html5中的視頻(video)與音頻(audio)。在進(jìn)入主題之前我們先了解一下Flash與html5這兩種技術(shù)的時代背景與發(fā)展歷史。 1.前...
閱讀 3110·2021-11-24 09:39
閱讀 968·2021-09-07 10:20
閱讀 2389·2021-08-23 09:45
閱讀 2255·2021-08-05 10:00
閱讀 566·2019-08-29 16:36
閱讀 833·2019-08-29 11:12
閱讀 2813·2019-08-26 11:34
閱讀 1839·2019-08-26 10:56