1,對于 HTTP 協(xié)議而言,HTML、CSS、JS、JSON 的本質(zhì)都是什么?
- 對于HTTP協(xié)議而言,html、css、js、json是符合相應(yīng)語法的字符串
- 用戶訪問頁面時,瀏覽器根據(jù)用戶請求的路徑,向服務(wù)器發(fā)起請求,服務(wù)器根據(jù)路判斷徑返回給瀏覽器對應(yīng)的字符串,同時也返回給瀏覽器Content-Type值。
- HTML:Content-Type=text/html,瀏覽器就把字符串當(dāng)HTML進(jìn)行解析;
- CSS:當(dāng) HTML 中有<link rel="stylesheet" href="" />,瀏覽器再向服務(wù)器發(fā)起請求,服務(wù)器返回字符串和Content-Type=text/css,瀏覽器就把返回的字符串當(dāng) CSS 進(jìn)行解析;
- JS: 當(dāng)HTML中有<script src="" />,瀏覽器向服務(wù)器發(fā)起請求,服務(wù)器返回字符串和Content-Type=text/javascript,瀏覽器就把字符串當(dāng) JS 進(jìn)行解析,返回給用戶。
2. 使用數(shù)組拼接出如下字符串 ,其中styles數(shù)組里的個數(shù)不定
var data = {
name: '女裝',
styles: ['短款', '冬季', '春裝']
};
function getTpl(data){
var str = '<dl class="product">'
str = str + "<dt>女裝</dt>"
for(var key in data.styles){
str = str + '<dd>' + data.styles[key] + '</dd>'
}
str = str + "</dl>"
return str
}
var result = getTpl(data)
console.log(result)
3.寫出兩種以上聲明多行字符串的方法
var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde'
var str ='abcdeabcdeabc\
deancdeabcdea\
bcdeabcdeancd\
eabcdeabcdeabc\
deancdeabcdeab\
cdeabcdeancde'
console.log(str)
var str ='abcdeabcdeabc'
+'deancdeabcdea'
+'bcdeabcdeancd'
+'eabcdeabcdeabc'
+'deancdeabcdeab'
+'cdeabcdeancde'
(function () { /*
deancdeabcdea
bcdeabcdeancd
eabcdeabcdeabc
deancdeabcdeab
cdeabcdeancde
*/}).toString().split('\n').slice(1,-1).join('\n')
4. 補全如下代碼,讓輸出結(jié)果為字符串: hello\饑人谷
var str = "hello\\\\饑人谷"
console.log(str)
5. 以下代碼輸出什么?為什么
var str = 'jirengu\nruoyu'
console.log(str.length) // 13 \n占據(jù)一個字符
6. 寫一個函數(shù),判斷一個字符串是回文字符串,如 abcdcba是回文字符串, abcdcbb不是
var str = "abcdcba"
str == str.split('').reverse().join('')
7. 寫一個函數(shù),統(tǒng)計字符串里出現(xiàn)出現(xiàn)頻率最多的字符
var str = 'aasdgajsdfncjknbvzjnakjfiuhgbvkz';
var num = {};
function count(str){
for(var i=0; i<str.length; i++){
var oneStr = str.charAt(i);
if(num[oneStr]){
num[oneStr]++;
}else{
num[oneStr] = 1;
};
};
return num;
};
count(str);
console.log(num);
var maxAttr = null
var max = 0;
for(attr in num){
if(max<num[attr]){
max = num[attr];
maxAttr = attr;
};
};
for(var attr in num){
if(num[attr] == max){
alert('出現(xiàn)次數(shù)最多的字符是' + attr);
alert('出現(xiàn)的次數(shù)是' + max);
};
};
</script>
8,寫一個camelize函數(shù),把my-short-string形式的字符串轉(zhuǎn)化成myShortString形式的字符串,如

Paste_Image.png
9,寫一個 ucFirst函數(shù),返回第一個字母為大寫的字符 (***)

Paste_Image.png
9,寫一個函數(shù)truncate(str, maxlength), 如果str的長度大于maxlength,會把str 截斷到maxlength長,并加上...,如

Paste_Image.png
10,什么是 JSON格式數(shù)據(jù)?JSON格式數(shù)據(jù)如何表示對象?window.JSON 是什么?
1 JSON的全稱是”JavaScript Object Notation”,意思是JavaScript對象表示法,它是一種基于文本,獨立于語言的輕量級數(shù)據(jù)交換格式。這些特性使JSON成為理想的數(shù)據(jù)交換語言。易于人閱讀和編寫,同時也易于機器解析和生成。JSON語法是 JavaScript 對象表示語法的子集JSON之所以流行,是因為可以把JSON數(shù)據(jù)結(jié)構(gòu)解析為有用的javascript對象
2表示對象:值在k:value的鍵值對中,鍵 值用" " 包裹用, 分隔{ }保存對象[ ]保存數(shù)組值(value)可以是雙引號括起來的字符串(string)、數(shù)值(number)、true、false、 null、對象(object)或者數(shù)組(array)。這些結(jié)構(gòu)可以嵌套。
json建構(gòu)于兩種基本結(jié)構(gòu):(1) “名稱/值”對的集合(無序)——對象{key1:value1,key2:value2,...}(2) 值的(有序)列表——————數(shù)組[{key1:value1,key2:value2},{key3:value3,key4:value4}]
- 3 window.JSON 是瀏覽器的內(nèi)置對象(本地化的JSON對象),用來檢測對JSON的支持情況, 首批被瀏覽器支持的功能之一,所有新的瀏覽器都支持window.JSON,將來JSON必將大量應(yīng)用于HTML5應(yīng)用中window.json發(fā)展由來
典型的JSON API包含兩個函數(shù),parse()和stringify()(分別用于將字符串序列化成DOM對象和將DOM對象轉(zhuǎn)換成字符串)
11 ,如何把JSON 格式的字符串轉(zhuǎn)換為 JS 對象?如何把 JS對象轉(zhuǎn)換為 JSON 格式的字符串?
var hh={
'name': 'teng',
'age': 24};
var bb=JSON.stringify(hh);//對象轉(zhuǎn)字符串
var hh=JSON.parse(bb);// json轉(zhuǎn)換的字符串可以用parse 轉(zhuǎn)回對象
console.log(bb); // "{"name":"teng","age":24}"
console.log(hh);
// [object Object] {
age: "24",
name: "tom",
sex: "男"
}
- JSON 對象可以嵌套使用
JSON 可以將 JavaScript 對象中表示的一組數(shù)據(jù)轉(zhuǎn)換為字符串。
瀏覽器-- 客戶端 ---服務(wù)器 之間傳輸 的數(shù)據(jù)都是 以字符串的方式傳遞,
處理客戶端 提交的數(shù)據(jù)時 一般為了更好的處理數(shù)據(jù), 將json 的字符串轉(zhuǎn)換成json對象,(面向?qū)ο蟮姆绞剑?字符串中提取其中的一個屬性
轉(zhuǎn)換為JSON 對象 : JSON.parse()
JSON 對象轉(zhuǎn)換成jSON格式的字符串: JSON.stringify()
普通字符串,json字符串和json對象的區(qū)別
字符串:這個很好解釋,指使用“”雙引號或’’單引號包括的字符。例如:var comStr = 'this is string';
json字符串:指的是符合json格式要求的js字符串。例如:var jsonStr = "{StudentID:'100',Name:'tmac',Hometown:'usa'}";
json對象:指符合json格式要求的js對象。例如:var jsonObj = { StudentID: "100", Name: "tmac", Hometown: "usa" }; - 創(chuàng)建對象有兩種方法,一、new Object()創(chuàng)建一個新對象;二、通過字面量創(chuàng)建法,var obj={}。在對象中的數(shù)據(jù),總是以鍵值對的形式出現(xiàn),如:name:"孫悟空",當(dāng)有多個鍵值對的時候,在每個的結(jié)尾有“,”區(qū)分。同時,對象的屬性可以是對象也可以是函數(shù)。
當(dāng)我們數(shù)據(jù)寫入一個對象中,我們需要對這個數(shù)據(jù)進(jìn)行傳輸或者存儲到計算機的時候怎么辦呢?計算機在存儲、處理、傳輸數(shù)據(jù)時,必須以二進(jìn)制形式進(jìn)行。那么當(dāng)要對一個對象進(jìn)行傳輸或者存儲的時候,我們就需要先把對象轉(zhuǎn)換為字符串等可以傳輸?shù)臄?shù)據(jù),而把對象轉(zhuǎn)為字符串的過程就叫對象序列化。 - 對象序列化方式:
第一種方式是 JSON(JavaScript Object Notation)數(shù)據(jù)
JSON數(shù)據(jù)的格式和 JavaScript字面量創(chuàng)建對象的格式基本相同,唯一的區(qū)別是JSON數(shù)據(jù)中不能有函數(shù),JSON.stringify函數(shù),可以把一個對象轉(zhuǎn)換為JSON字符串,這個函數(shù)會自動去除對象中的函數(shù)。
第二種: XML