最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

JS面試題:join,typeof,querySelector,冒泡事件,值類型,引用類型【詩(shī)書畫唱】

2021-03-29 23:39 作者:詩(shī)書畫唱  | 我要投稿

代碼索引:

var arr = ['bar','foo','mee'];

var str =?arr.join('@');

console.log(str);

//給下拉框添加一些選項(xiàng)

var sel = document.querySelector('#sel');


sel.add(new Option('本科','本科'));




前言:之后更新的內(nèi)容都是需要記的,至少提問(wèn)時(shí),你能回答,并且默寫式操作,有時(shí)我會(huì)創(chuàng)作些視頻來(lái)進(jìn)行演示默寫式操作。我認(rèn)為常常記錄些演示對(duì)我的進(jìn)步幫助很大。恕我直言,其實(shí)目前很多知識(shí)都不用記憶,只要保持在網(wǎng)絡(luò)就可以,但是目前面試都是落后的面試提問(wèn)等的篩選方法(沒(méi)辦法,因此只能記一些東西),如果有人問(wèn)你一些“基本”知識(shí),你答不出來(lái),不一定代表你“菜”。

你有能力創(chuàng)作滿足各種需求的作品等等就是“?!?。同時(shí)我認(rèn)為很重要的就是記錄“演示”。

建議:邊“上課”等時(shí),邊去跟著”老師等人“寫幾乎所有的代碼等等。無(wú)論是整理衣物還是別的生活物品,自己的專欄,記錄筆記等等我都有一個(gè)我很好的習(xí)慣和認(rèn)為是很好的方法:把常用的放在顯而易見的地方。一般我追求的都是高效,自己認(rèn)為如何高效就如何做,其實(shí)有些東西記錄后查記錄或復(fù)制粘貼等等更高效我就這么做,有些記憶到腦子里或自己敲代碼等等更高效我就這么做,像js的部分其實(shí)自己敲代碼等等還更高效一點(diǎn),以為代碼等等也不多且不難理解等等。

發(fā)現(xiàn)后的感想:發(fā)現(xiàn)“=function(){”這個(gè)部分的代碼很常見,比如

window.onload=function(){


}


個(gè)人想法索引:

其實(shí)多記錄一些對(duì)某些內(nèi)容的想法都自己的理解,記憶,運(yùn)用等等都有很大的好處。

其實(shí)這題理解值類型和引用類型就很容易了:值類型就是賦值一次后就變成固定不可變值,不可重新賦值。引用類型就是可以可變值,可重新賦值。Java中String和js中的object是可以重新賦值的“引用類型”,但在js中string,number,boolean是不可以重新賦值的“值類型”。


面試題索引:?用JavaScript實(shí)現(xiàn), 鼠標(biāo)點(diǎn)擊頁(yè)面中的任意標(biāo)簽,alert該標(biāo)簽的名稱。

單詞其實(shí)很多單詞等等內(nèi)容有時(shí)內(nèi)容不用記,我只記我認(rèn)為夠用的部分。

target[?tɑ?ɡ?t]

n.目標(biāo)

ify

?使動(dòng);?

ify---為后綴, 使成,使……化

這和ize類似

ize---為后綴,做成,變成,……化

serial --> serialize:序列化

simple-->simplify 簡(jiǎn)單化,簡(jiǎn)化? (這是個(gè)較好理解的例子)

string --> stringify :字符串化

科普索引:

事件冒泡:事件按照從最特定的事件目標(biāo)到最不特定的事件目標(biāo)(document對(duì)象)的順序觸發(fā)。

即子級(jí)元素先觸發(fā),父級(jí)元素后觸發(fā)。

如果對(duì)象是值類型,你給其添加.color或.name等等屬性都是沒(méi)有用的,控制臺(tái)打印時(shí),打印出來(lái)的是undefined

單選框統(tǒng)一設(shè)置為name="sex",自動(dòng)有只選中一個(gè)的效果

邊看教程視頻做的學(xué)習(xí)筆記索引:

JS中的3種打印語(yǔ)句:一般的話就是使用圖中我寫的前2種方法來(lái)進(jìn)行測(cè)試等等。

變量沒(méi)有賦值就是會(huì)用typeof檢測(cè)出undefined

有時(shí)的話,所有typeof類型檢測(cè)運(yùn)算符時(shí),打印function時(shí),是function類型,但是可以把function看成object類型

typeof可以返回function類型

如果有人問(wèn)你js數(shù)據(jù)類型有哪些,一般就說(shuō):“number,string,boolean,undefined,null,object”

遍歷的2種方式:for,foreach(for...in...)

需要熟悉的對(duì)象的遍歷,使用for(var XXX in XXX)

Dom獲取元素的ID等選擇器

和HTML關(guān)聯(lián)的JS代碼都要寫在window.onload=function(){}中,就是會(huì)執(zhí)行HTML代碼后再執(zhí)行其中的代碼

使用querySelector獲取元素

獲取聲明為radio的input單選框的話,可以使用querySelectorAll(’[name="sex"]')等方法獲取其“男”,“女”的value值

使用querySelectorAll和innerHTM;L控制臺(tái)打印獲取的div中的文字于console控制臺(tái)中

doucument.querySelectorAll(’.XXX‘)就是類似于類選擇器的作用,效果,功能......

使用querySelector或querySelectAll可以代替其他ID選擇器,類選擇器,標(biāo)簽選擇器,name等相關(guān)的選擇器等等的效果

設(shè)置屬性

class為js關(guān)鍵字,所以className對(duì)應(yīng)的是標(biāo)簽的class屬性

不常用dom嵌入,防止HTML和JS代碼緊密耦合

如果使用圖中顯示的用document.querySelector(XXX).onclick=function(){}等的方法進(jìn)行直接js綁定事件,2個(gè)方式相同了,就是會(huì)前面的一個(gè)方式失效,最后的方式才有效

最后一個(gè)綁定的事件有效,前面的事件失效的情況,產(chǎn)生了方法覆蓋

我理解的事件冒泡就是:給有父子關(guān)系的元素,比如包裹方和相對(duì)的被包裹方分別是父元素和子元素,即圖中的div相對(duì)于form,分別是div為父元素,form為子元素,給父子元素都綁定相同的點(diǎn)擊事件等等,運(yùn)行后就都會(huì)分別執(zhí)行事件,由里的子元素到外的父元素的順序來(lái)執(zhí)行事件,這里不會(huì)出現(xiàn)事件覆蓋

阻止事件冒泡的方法

關(guān)于XXX.toString=function(){}方法

通過(guò)JSON.parse(XXX)方法或eval(’(‘+XXX+')');將不可以獲取pwd等屬性的string值類型JSON字符串,轉(zhuǎn)換成引用類型的js對(duì)象,方便引用出其pwd等屬性的對(duì)應(yīng)的值

使用JSON.stringify(XXX)方法將數(shù)組或js對(duì)象轉(zhuǎn)換成JSON字符串


作業(yè)索引:

1、創(chuàng)建三個(gè)數(shù)組,用for循環(huán)對(duì)數(shù)組進(jìn)行遍歷,使用console.log進(jìn)行打印。

2、創(chuàng)建三個(gè)對(duì)象,用foreach遍歷,對(duì)對(duì)象中的屬性進(jìn)行遍歷,并且console.log進(jìn)行打印。

3、創(chuàng)建一個(gè)單選框,通過(guò)js獲取到選中的選項(xiàng)并且打印值。

4、創(chuàng)建一個(gè)多選框,通過(guò)js獲取到選中的選項(xiàng),要求這些選項(xiàng)使用,進(jìn)行分割,最后打印出一個(gè)總的字符串。

5、創(chuàng)建一個(gè)下拉框,通過(guò)js添加一些選項(xiàng)進(jìn)去,并設(shè)置某一個(gè)選項(xiàng)為默認(rèn)選中。

6、對(duì)第1題的三個(gè)數(shù)組中的值進(jìn)行字符串的拼接。

['bar','foo','mee'],拼接成bar,foo,mee的字符串


邊看教程視頻做的學(xué)習(xí)筆記 START


JS中的3種打印語(yǔ)句:一般的話就是使用圖中我寫的前2種方法來(lái)進(jìn)行測(cè)試等等。


其實(shí)typeof運(yùn)算符就是進(jìn)行類型檢測(cè)的。
變量沒(méi)有賦值就是會(huì)用typeof檢測(cè)出undefined



有時(shí)的話,所有typeof類型檢測(cè)運(yùn)算符時(shí),打印function時(shí),是function類型,但是可以把function看成object類型
typeof可以返回function類型
如果有人問(wèn)你js數(shù)據(jù)類型有哪些,一般就說(shuō):“number,string,boolean,undefined,null,object”

js中有六種數(shù)據(jù)類型,包括五種基本數(shù)據(jù)類型(Number,String,Boolean,Null,Undefined),和一種混合數(shù)據(jù)類型(Object)。

前面說(shuō)到j(luò)s中變量是松散類型的,因此有時(shí)候我們需要檢測(cè)變量的數(shù)據(jù)類型。

typeof操作符可以檢測(cè)變量的數(shù)據(jù)類型(輸出的是一個(gè)關(guān)于數(shù)據(jù)類型的字符串)。

返回如下6種字符串:number,string,boolean,object,undefined,function.且看如下例子:

var x = 1;
console.log(typeof x);//number

?

var a = undefined;
console.log(typeof a);//undefined

?

var b = null;
console.log(typeof b);//object,(null是空對(duì)象引用/或者說(shuō)指針)。

?

var c = new Object();
console.log(typeof c);//object

?

var e = [1,2,3];
console.log(typeof e);//object

?

var d = function(){
?// ... 語(yǔ)句塊
}
console.log(typeof d);//function

上面代碼中,null類型進(jìn)行typeof操作符后,結(jié)果是object,原因在于,null類型被當(dāng)做一個(gè)空對(duì)象引用。


遍歷的2種方式:for,foreach(for...in...)
需要熟悉的對(duì)象的遍歷,使用for(var XXX in XXX)
Dom獲取元素的ID等選擇器
和HTML關(guān)聯(lián)的JS代碼都要寫在window.onload=function(){}中,就是會(huì)執(zhí)行HTML代碼后再執(zhí)行其中的代碼
使用querySelector獲取元素
獲取聲明為radio的input單選框的話,可以使用querySelectorAll(’[name="sex"]')等方法獲取其“男”,“女”的value值
使用querySelectorAll和innerHTM;L控制臺(tái)打印獲取的div中的文字于console控制臺(tái)中(這里querySelectorAll的作用其實(shí)就是類似于標(biāo)簽選擇器)
doucument.querySelectorAll(’.XXX‘)就是類似于類選擇器的作用,效果,功能......
使用querySelector或querySelectAll可以代替其他ID選擇器,類選擇器,標(biāo)簽選擇器,name等相關(guān)的選擇器等等的效果
設(shè)置屬性
class為js關(guān)鍵字,所以className對(duì)應(yīng)的是標(biāo)簽的class屬性
不常用dom嵌入,防止HTML和JS代碼緊密耦合
如果使用圖中顯示的用document.querySelector(XXX).onclick=function(){}等的方法進(jìn)行直接js綁定事件,2個(gè)方式相同了,就是會(huì)前面的一個(gè)方式失效,最后的方式才有效
最后一個(gè)綁定的事件有效,前面的事件失效的情況,產(chǎn)生了方法覆蓋
使用document.querySelector(XXX).addEventListener('click')的方式的話,是“多播事件委托”,不會(huì)出現(xiàn)只有最后的事件有效的事件覆蓋現(xiàn)象,會(huì)出現(xiàn)按順序執(zhí)行
事件對(duì)象,冒泡
我理解的事件冒泡就是:給有父子關(guān)系的元素,比如包裹方和相對(duì)的被包裹方分別是父元素和子元素,即圖中的div相對(duì)于form,分別是div為父元素,form為子元素,給父子元素都綁定相同的點(diǎn)擊事件等等,運(yùn)行后就都會(huì)分別執(zhí)行事件,由里的子元素到外的父元素的順序來(lái)執(zhí)行事件,這里不會(huì)出現(xiàn)事件覆蓋
阻止事件冒泡的方法
關(guān)于XXX.toString=function(){}方法
通過(guò)JSON.parse(XXX)方法或eval(’(‘+XXX+')');將不可以獲取pwd等屬性的string值類型JSON字符串,轉(zhuǎn)換成引用類型的js對(duì)象,方便引用出其pwd等屬性的對(duì)應(yīng)的值




邊看教程視頻做的學(xué)習(xí)筆記 END


面試題 START


2. (7分) 用JavaScript實(shí)現(xiàn), 鼠標(biāo)點(diǎn)擊頁(yè)面中的任意標(biāo)簽,alert該標(biāo)簽的名稱。

個(gè)人對(duì)這題的想法:其實(shí)這題用事件冒泡做就很容易。


事件冒泡:事件按照從最特定的事件目標(biāo)到最不特定的事件目標(biāo)(document對(duì)象)的順序觸發(fā)。


即子級(jí)元素先觸發(fā),父級(jí)元素后觸發(fā)。



3. (5分) 請(qǐng)寫出下方代碼段的執(zhí)行結(jié)果,并說(shuō)明原因。

var s1 = "abc";

vars2=newString(s1);

s1.color = "blue";

s2.color = "red";

console.log( s1===s2, s1.color, s2.color)


答案:false,undefined,red

個(gè)人對(duì)這題的想法:其實(shí)這題理解值類型和引用類型就很容易了:值類型就是賦值一次后就變成固定不可變值,不可重新賦值。引用類型就是可以可變值,可重新賦值。Java中String和js中的object是可以重新賦值的“引用類型”,但在js中string,number,boolean是不可以重新賦值的“值類型”。


如果對(duì)象是值類型,你給其添加.color或.name等等屬性都是沒(méi)有用的,控制臺(tái)打印時(shí),打印出來(lái)的是undefined
使用JSON.stringify(XXX)方法將數(shù)組或js對(duì)象轉(zhuǎn)換成JSON字符串



面試題 END

作業(yè) START

1、創(chuàng)建三個(gè)數(shù)組,用for循環(huán)對(duì)數(shù)組進(jìn)行遍歷,使用console.log進(jìn)行打印。


<!--

1、創(chuàng)建三個(gè)數(shù)組,用for循環(huán)對(duì)數(shù)組進(jìn)行遍歷,使用console.log進(jìn)行打印。

-->

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<script>

var arr1=["詩(shī)書畫唱1","三連1","關(guān)注1"]

var arr2=["詩(shī)書畫唱2","三連2","關(guān)注2"]

var arr3=["詩(shī)書畫唱3","三連3","關(guān)注3"]


for(var i=0;i<arr1.length;i++){


console.log(arr1[i]);


}

for(var i=0;i<arr2.length;i++){


console.log(arr2[i]);


}


for(var i=0;i<arr3.length;i++){


console.log(arr3[i]);


}


</script>

<body>


</body>

</html>

按F12


2、創(chuàng)建三個(gè)對(duì)象,用foreach遍歷,對(duì)對(duì)象中的屬性進(jìn)行遍歷,并且console.log進(jìn)行打印。


<!--

2、創(chuàng)建三個(gè)對(duì)象,用foreach遍歷,對(duì)對(duì)象中的屬性進(jìn)行遍歷,并且console.log進(jìn)行打印。

-->

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<script>

? var obj1= {

? ? id: '1',

? ? name: '詩(shī)書畫唱1',

? ? age: 21,

? ? sex: '男'

? ? };

? ? ? var obj2= {

? ? id: '1',

? ? name: '詩(shī)書畫唱2',

? ? age: 22,

? ? sex: '男'

? ? };

? ? ? var obj3= {

? ? id: '1',

? ? name: '詩(shī)書畫唱3',

? ? age: 23,

? ? sex: '男'

? ? };


? ? for(var i in obj1) {

? ? console.log(obj1[i]);

? ? }


for(var i in obj2) {

? ? console.log(obj2[i]);

? ? }

? for(var i in obj3) {

? ? console.log(obj3[i]);

? ? }

</script>

<body>

</body>

</html>

3、創(chuàng)建一個(gè)單選框,通過(guò)js獲取到選中的選項(xiàng)并且打印值。


<!--

3、創(chuàng)建一個(gè)單選框,通過(guò)js獲取到選中的選項(xiàng)并且打印值。

-->

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<script>


window.onload=function(){



// var arr=document.querySelectorAll('input');

//

// for(var i=0;i<arr.length;i++){

// if(arr[0].checked){

//// console.log(arr[i].value)

//arr[1].checked=false;

//

// }

// if(arr[1].checked){

//// console.log(arr[i].value)

//arr[0].checked=false;

//

// }

// }


// document.querySelector('body').addEventListener('click',function(e){

//? ? ? ? ? ? ? ? alert(e.target.value);

//? ? ? ? ? ? ? });


document.querySelector('#sex1').onclick = function(e){

? ? ? ? ? ? ? console.log(e.target.value);

? ? ? ? ? ? ? ? }

? document.querySelector('#sex2').onclick = function(e){

? ? ? ? ? ? ? console.log(e.target.value);

? ? ? ? ? ? ? ? }

}

//單選框統(tǒng)一設(shè)置為name="sex",自動(dòng)有只選中一個(gè)的效果

</script>

<body>

<input type="radio"? id="sex1"? name="sex"? value="男" checked="checked"/>男

<input type="radio" id="sex2"? name="sex"? value="女" />女

</body>

</html>



4、創(chuàng)建一個(gè)多選框,通過(guò)js獲取到選中的選項(xiàng),要求這些選項(xiàng)使用,進(jìn)行分割,最后打印出一個(gè)總的字符串。

<!--

4、創(chuàng)建一個(gè)多選框,通過(guò)js獲取到選中的選項(xiàng),要求這些選項(xiàng)使用,進(jìn)行分割,最后打印出一個(gè)總的字符串。

-->



<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>




</head>

<script>

window.onload=function(){



? ? ? ? ? ? ? ? document.querySelector('#button').onclick = function(e){

? ? ? ? ? ? ?


var s="";

var arr=document.querySelectorAll('[type="checkbox"]')

for(var i=0;i<arr.length;i++){

// alert(arr[i].checked)

if(arr[i].checked){

s=s+arr[i].value}

}

console.log(s)


}


}


</script>

<body>

<input type="checkbox" value="點(diǎn)贊"/>

<input type="checkbox" value="投幣"/>

<input type="checkbox" value="收藏"/>


<button id='button'>點(diǎn)擊后打印選中的多選框拼接的字符串</button>


</body>

</html>


5、創(chuàng)建一個(gè)下拉框,通過(guò)js添加一些選項(xiàng)進(jìn)去,并設(shè)置某一個(gè)選項(xiàng)為默認(rèn)選中。

老師的方法:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<script>

window.onload = function(){

var sexs = document.querySelectorAll('[name="sex"]');

for(var i = 0;i < sexs.length;i ++) {

if(sexs[i].checked) {

console.log(sexs[i].value);

}

}

//給下拉框添加一些選項(xiàng)

var sel = document.querySelector('#sel');

sel.add(new Option('本科','本科'));

sel.add(new Option('大專','大專'));

sel.add(new Option('高中','高中'));

sel.add(new Option('初中','初中'));

//默認(rèn)選中大專選項(xiàng)

sel.value = '大專';

var arr = ['bar','foo','mee'];

var str = arr.join('@');

console.log(str);

}

</script>

</head>

<body>

<input type="radio" name="sex" value="男" />男

<input type="radio" name="sex" value="女" checked />女

<br>

<input type="checkbox" name="hobbys" value="唱歌" />唱歌

<input type="checkbox" name="hobbys" value="吉他" />吉他

<input type="checkbox" name="hobbys" value="街舞" />街舞

<br>

<select id="sel">

</select>

</body>

</html>

我的方法:






6、對(duì)第1題的三個(gè)數(shù)組中的值進(jìn)行字符串的拼接。

['bar','foo','mee'],拼接成bar,foo,mee的字符串


<!--

1、創(chuàng)建三個(gè)數(shù)組,用for循環(huán)對(duì)數(shù)組進(jìn)行遍歷,使用console.log進(jìn)行打印。

-->

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<script>

var arr1=["詩(shī)書畫唱1","三連1","關(guān)注1"]

var arr2=["詩(shī)書畫唱2","三連2","關(guān)注2"]

var arr3=["詩(shī)書畫唱3","三連3","關(guān)注3"]



arr11="";

? ? for(var i = 0;i <arr1.length;i ++){

? ?

? ?

? ? arr11=arr11+arr1[i];

// ? ? console.log(arr1[i])

? ? }

?

? ??

? ??


arr22="";

? ? for(var i = 0;i <arr2.length;i ++){

? ?

? ?

? ? arr22=arr22+arr2[i];

? ? }



arr33="";

? ? for(var i = 0;i <arr3.length;i ++){

? ?

? ?

? ? arr33=arr33+arr3[i];

? ? }

console.log(arr11+arr22+arr33)







var arr4=['bar','foo','mee'];

arr44=arr4[0];

? ? for(var i = 1;i <arr4.length;i ++){

? ?

? ?

? ? arr44=arr44+","+arr4[i];

? ? }

console.log(arr44)


</script>

<body>


</body>

</html>



作業(yè) END


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<script>

//在控制臺(tái)打印

//console.log('hello');

//彈出警告框

//alert('world');

//在頁(yè)面上打印

//document.write('abc');


//JS中的數(shù)據(jù)類型根據(jù)變量的賦值來(lái)確定

//JS中的變量的數(shù)據(jù)類型是可以改變的

//數(shù)據(jù)類型

//number:在js中部分整形和浮點(diǎn)型

var num = 1;

//console.log(typeof num);//number

num = 'Hello world';

//console.log(typeof num);//string

var b = true;

num = false;

//console.log(typeof b);//boolean

//console.log(typeof num);//boolean

//當(dāng)定義了一個(gè)變量,但是沒(méi)有賦值那么就會(huì)產(chǎn)生undefiend

var a;

//console.log(typeof a);//undefined

? ? a = null;

? ? //console.log(typeof a);//object

? ? var o1 = {

? ? name: 'Tome',

? ? age: 19

? ? };

? ? var o2 = new Object();

? ? //console.log(typeof o1);//object

? ? //console.log(typeof o2);//object

? ? var arr = [1,2,3];

? ? //console.log(typeof arr);//object ? ??

? ? var fn = function(){

? ? ///console.log('Hello world');

? ? }

? ? function fn1(){

? ?

? ? }

? ? //console.log(typeof fn);//function

? ? //console.log(typeof fn1);//function

? ??

? ? //數(shù)組的遍歷

? ? var pro = ['德芙巧克力','辣條','力士香皂'];

? ? //for循環(huán)

? ? for(var i = 0;i < pro.length;i ++) {

? ? //console.log(pro[i]);

? ? }

? ? //foreach遍歷

? ? for(var i in pro) {

? ? //console.log(pro[i]);

? ? }

? ? //對(duì)象的遍歷

? ? var stu = {

? ? sno: 's0009',

? ? name: '張三',

? ? age: 20,

? ? sex: '男'

? ? };

? ? for(var attr in stu) {

? ? //console.log(stu[attr]);

? ? }

? ? ? ??

? ? //寫在onload方法中的js代碼在html代碼執(zhí)行完成以后再執(zhí)行

? ? window.onload = function(){

? ? var act = document.querySelector('#act').value;

? ? console.log(act);

? ?

? ? var ss = document.querySelectorAll('[name="sex"]');

? ? for(var i = 0;i < ss.length;i ++) {

? ? console.log(ss[i].value);

? ? }

? ?

? ? var ds = document.querySelectorAll('div');

? ? for(var i = 0;i < ds.length;i ++) {

? ? console.log(ds[i].innerHTML);

? ? }

? ? var es = document.querySelectorAll('.ft');

? ? for(var i = 0;i < es.length;i ++) {

? ? es[i].style.color = 'red';

? ? es[i].style.backgroundColor = 'blue';

? ? }

? ?

? ? //給btn按鈕綁定點(diǎn)擊事件

? ? //這種綁定方式后面綁定的函數(shù)會(huì)覆蓋前面綁定的函數(shù)

// ? ? document.querySelector('#btn').onclick = function(e){

// ? ? alert('abc');??

// ? ? }

// ? ? document.querySelector('#btn').onclick = function(){

// ? ? alert('def');

// ? ? }

? ? ? ? ? ? ? ? //這種綁定方式不會(huì)覆蓋,按照綁定的順序依次執(zhí)行綁定的函數(shù)

? ? ? ? ? ? ? ? //多播事件委托

//? ? ? ? ? ? ? document.querySelector('#btn').addEventListener('click',function(e){

//? ? ? ? ? ? ? alert('abc');

//? ? ? ? ? ? ? });

//? ? ? ? ? ? ? document.querySelector('#btn').addEventListener('click',function(e){

//? ? ? ? ? ? ? alert('def');

//? ? ? ? ? ? ? });


? ? ? ? ? ? ? ? document.querySelector('#mp').onclick = function(e){

? ? ? ? ? ? ? ? alert('按鈕的點(diǎn)擊事件被觸發(fā)啦');

? ? ? ? ? ? ? ? //阻止事件冒泡

? ? ? ? ? ? ? ? e.stopPropagation();

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? document.querySelector('#frm').onclick = function(){

? ? ? ? ? ? ? ? alert('表單的點(diǎn)擊事件被觸發(fā)啦');

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? document.querySelector('#myDiv').onclick = function(){

? ? ? ? ? ? ? ? alert('div的點(diǎn)擊事件被觸發(fā)啦');

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? document.querySelector('body').onclick = function(e){

? ? ? ? ? ? ? ? alert(e.target.tagName);

? ? ? ? ? ? ? ? }

? ?} ? ??

</script>

</head>

<body>

? ? <div id="myDiv">

? ? <form id="frm">

? ? <input id="mp" type="button" value="冒泡演示" />

? ? </form>

? ? </div>

<input type="button" value="點(diǎn)擊" id="btn" />

? ? <input type="text" id="act" value="admin" class="ft"/>

? ? <input type="radio" name="sex" value="男" />男

? ? <input type="radio" name="sex" value="女" />女

? ? <div>測(cè)試文字一</div>

? ? <div class="ft">測(cè)試文字二</div>

? ? <div class="ft">測(cè)試文字三</div>

? ? <p class="ft">Hello world</p>

</body>

</html>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<script>

//number,string,boolean都是值類型

? ? //object是引用類型

? ? //值類型和引用類型的區(qū)別

? ? var str = 'kop';//值類型

? ? var sr = new String(str);//引用類型

? ??

? ? str.name = 'Hello';//無(wú)效的代碼

? ? console.log(str.name);//undefined

? ? sr.name = 'Hello';//有效的代碼

? ? console.log(sr.name);//Hello

? ? ? ??

? ? //覆蓋toString方法

? ? sr.toString = function(){

? ? return 'Hello world';

? ? }

? ? //調(diào)用了sr的toString方法

? ? //alert(sr);

? ??

? ? str.toString = function(){

? ? return 'aaa';

? ? }

? ? //alert(str);

? ??

? ? var jsonStr = '{"act":"ADMIN","pwd":123}';

? ? //console.log(typeof jsonStr);//string

? ? //console.log(jsonStr.act);

? ? //將字符串轉(zhuǎn)換成js對(duì)象

? ? //方法一:

? ? var obj = JSON.parse(jsonStr);

? ? //console.log(typeof obj);

? ? console.log(obj.act);

? ? //方法二:

? ? var obj1 = eval('(' + jsonStr + ')');

? ? console.log(typeof obj1);

? ? console.log(obj1.pwd);

? ??

? ? var sn = '[1,2,3]';

? ? //將sn變成一個(gè)數(shù)組

? ? var a2 = JSON.parse(sn);

? ? for(var i = 0;i < a2.length;i ++){

? ? console.log(a2[i]);

? ? }

? ? var a3 = eval('(' + sn + ')');

? ? for(var i = 0;i < a3.length;i ++){

? ? console.log(a3[i]);

? ? }

? ??

? ??

? ? //將js對(duì)象轉(zhuǎn)換成json字符串

? ? var stu = {

? ? name: 'tom',

? ? age: 20

? ? };

? ? //將stu轉(zhuǎn)換成一個(gè)字符串

? ? var sj = JSON.stringify(stu);

? ? //console.log(sj);

? ? var a1 = ['one','mee','test'];

? ? //console.log(typeof a1);//object

? ? //將a1轉(zhuǎn)換成字符串

? ? var so = JSON.stringify(a1);

? ? //console.log(so);

</script>

</head>

<body>

</body>

</html>


JS面試題:join,typeof,querySelector,冒泡事件,值類型,引用類型【詩(shī)書畫唱】的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
南宁市| 搜索| 扎囊县| 崇文区| 济宁市| 藁城市| 同仁县| 米林县| 岗巴县| 北碚区| 阿荣旗| 和静县| 迭部县| 永定县| 涿鹿县| 平安县| 平舆县| 金湖县| 井陉县| 新乡县| 安仁县| 威远县| 固阳县| 瑞昌市| 两当县| 仪陇县| 永新县| 长泰县| 同德县| 建平县| 封丘县| 西城区| 青冈县| 留坝县| 东乌珠穆沁旗| 沧源| 全州县| 林口县| 九台市| 乌兰察布市| 达尔|