1. Javascript中滚粟,有一個(gè)函數(shù)寻仗,執(zhí)行對(duì)象查找時(shí),永遠(yuǎn)不會(huì)去查找原型凡壤,這個(gè)函數(shù)是署尤?
問題解析:執(zhí)行對(duì)象查找,永遠(yuǎn)不會(huì)去查找原型亚侠,意思也就是只會(huì)在對(duì)象本身查找曹体。所以可以得出這個(gè)函數(shù)就是 hasOwnProperty():用于檢測(cè)一個(gè)對(duì)象自身(不包括原型鏈)是否具有指定名稱的屬性,如果有硝烂,返回true箕别,否則返回false。
語法:object.hasOwnProperty( propertyName )
2. JSON 的了解滞谢?
- (javascript object notation)全稱是javascript對(duì)象表示法串稀,是一種數(shù)據(jù)交換的文本格式,是一種數(shù)據(jù)交換的文本格式狮杨,
- 在 JS 語言中厨诸,一切都是對(duì)象。因此禾酱,任何支持的類型都可以通過 JSON字符串表示法來表示
- JSON.stringify()方法:用于將一個(gè)值轉(zhuǎn)為字符串微酬;JSON.parse()方法:JSON.parse
- 區(qū)分JSON字符串和JSON對(duì)象:
- JSON字符串:"{ "firstName":"John" , "lastName":"Doe" }"
- JSON對(duì)象:{ "firstName":"John" , "lastName":"Doe" }
可以看出區(qū)別就是是否加引號(hào)(或者雙引號(hào))
- 為什么使用 JSON?
對(duì)于 AJAX 應(yīng)用程序來說颤陶,JSON 比 XML 更快更易使用
3. js延遲加載的方式有哪些?
- 1)
script
標(biāo)簽中加入如defer
屬性
- 定義:腳本在頁面解析完后執(zhí)行颗管。
<script type="text/javascript" defer="defer"></script>
- 如果腳本不會(huì)改變文檔的內(nèi)容,可將
defer
屬性加入到 <script> 標(biāo)簽中滓走,以便加快處理文檔的速度垦江。
- 2)
script
標(biāo)簽中加入如async
屬性
- 定義:腳本相對(duì)于頁面的其余部分異步地執(zhí)行(當(dāng)頁面繼續(xù)進(jìn)行解析時(shí),腳本將被執(zhí)行)
<script type="text/javascript" src="demo_async.js" async="async"></script>
- 和
defer
的區(qū)別:async
只適用于外部腳本(即只有在使用src屬性時(shí))搅方。- 缺點(diǎn):不能控制加載的順序
- 3)來自Google幫助頁面的推薦方案(動(dòng)態(tài)創(chuàng)建DOM方式):
//這些代碼應(yīng)被放置在</body>標(biāo)簽前(接近HTML文件底部)
<script type="text/javascript">
function downloadJSAtOnload() {
var element = document.createElement("script");
element.src = "defer.js";
document.body.appendChild(element);
}
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
else if (window.attachEvent)
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
這段代碼意思是等到整個(gè)文檔加載完后比吭,再加載外部文件“defer.js”绽族。
使用此段代碼的步驟:
1).復(fù)制上面代碼
2).粘貼代碼到HTML的標(biāo)簽前 (靠近HTML文件底部)
3).修改“defer.js”為你的外部JS文件名
4).確保你文件路徑是正確的。例如:如果你僅輸入“defer.js”衩藤,那么“defer.js”文件一定與HTML文件在同一文件夾下吧慢。
- 注意:這段代碼直到文檔加載完才會(huì)加載指定的外部js文件。因此赏表,不應(yīng)該把那些頁面正常加載需要依賴的javascript代碼放在這里检诗。而應(yīng)該將JavaScript代碼分成兩組。一組是因頁面需要而立即加載的javascript代碼瓢剿,另外一組是在頁面加載后進(jìn)行操作的javascript代碼(例如添加click事件或其他東西)逢慌。這些需等到頁面加載后再執(zhí)行的JavaScript代碼,應(yīng)放在一個(gè)外部文件间狂,然后再引進(jìn)來攻泼。