JS面試題:join,typeof,querySelector,冒泡事件,值類型,引用類型【詩(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中有六種數(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ì)象引用。






















邊看教程視頻做的學(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是不可以重新賦值的“值類型”。




面試題 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>


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>
