-
pet對象調用speak方法,speak方法里的this指向的就是調這個方法的對象,pet。
查看全部 -
調用由頂層的global調用,所以this指向的全局,相當于global.pet('...')
構造函數里使用this,指向新構建好的對象
查看全部 -
當一個函數被作為一個對象的方法調用時,this總是指向調用這個方法的對象
查看全部 -
域名解析
Chrome搜索自身的DNS緩存 (緩存存在一分鐘)chrome://net-internals/#dns
沒有則搜索操作系統自身的DNS緩存(瀏覽器沒有找到緩存或緩存已經失效)
沒有則讀取本地的HOST文件C:\Windows\System32\drivers\etc
還沒有則瀏覽器發起一個DNS的一個系統調用,向本地主庫DNS服務器(一般是寬帶運營商)發起DNS請求。運營商會查找自身緩存找到對應條目;有則請求成功,沒有則代替瀏覽器發起一個迭代的DNS解析請求。1、首先找根域的DNS ip地址,(例:查找imooc.com)根域只知道com域的頂級域的IP地址;2、運營商拿到根域com域的IP地址,向com域查找域名地址,com域只有imooc.com的ip地址沒有域名地址;3、運營商拿到imooc.com的ip地址找到imooc域的dns服務器(由域名注冊商提供的萬維網),有,返回請求;4、運營商服務器把結果返回操作系統內核同時緩存起來;5、內核從dns服務器上拿到ip地址并把結果返回給瀏覽器
TCP三次握手
????????瀏覽器以隨機端口向服務器的web程序發起一個tcp連接請求,
????????tcp連接建立后就可以進行通信,服務器端收到消息,根據這個路徑參數,把后端經過一些列處理后的數據返回給瀏覽器。
進行渲染
?????????瀏覽器拿到數據進行渲染,所有的圖片<script>路徑都需要上述域名解析三次握手,所以減少請求次數是提高性能的重要指標
以123.com ?為例,COM 是根域名,123.com是人們經常提到的頂級域名,主域名可以理解為你的網站的訪問域名,一般是www.123.com
查看全部 -
模塊的流程
查看全部 -
var http = require('http');
var cheerio = require('cheerio');
var url = 'http://www.xianlaiwan.cn/learn/348';
?
function filterChapters(html) {
??? var $ = cheerio.load(html);
?
??? var chapters = $('.chapter.course-wrap');
?
??? var courseData = [];
?
??? chapters.each(function(item) {
??????? var chapter = $(this)
??????? var chapterTitle = chapter.find('h3').text();
??????? //console.log('test:' + chapterTitle);
?
??????? var videos = chapter.find('.video').children('li');
??????? var chapterData = {
??????????? chapterTitle: chapterTitle,
??????????? videos: []
??????? }
?
??????? videos.each(function(item) {
??????????? var video = $(this).find('.J-media-item');
??????????? var videoTitle = video.text();
??????????? //console.log('test:' + videoTitle);
?
??????????? var id = video.attr('href').split('video/')[1];
??????????? //console.log('test:' + id);
?
??????????? chapterData.videos.push({
??????????????? title: videoTitle,
??????????????? id: id
??????????? })
??????? })
??????? courseData.push(chapterData);
??? })
?
??? return courseData;
}
?
function printCourseInfo(courseData) {
??? courseData.forEach(function(item) {
??????? var chapterTitle = item.chapterTitle;
??????? console.log(chapterTitle.trim() + '\n');
??????? item.videos.forEach(function(video) {
??????????? console.log('【' + video.id + '】' + video.title.trim() + '\n');
??????? })
??? });
}
?
http.get(url, function(res) {
??? var html = '';
?
??? res.on('data', function(data) {
??????? html += data;
??? });
?
??? res.on('end', function() {
??????? //console.log(html);
??????? var courseData = filterChapters(html);
??????? printCourseInfo(courseData);
??? });
}).on('error', function() {
??? console.log('獲取課程數據出錯');
});
查看全部 -
由chrome瀏覽器,V8引擎,C++語言編寫的js運行環境
查看全部 -
作用域分為全局作用域和局部作用域
上下文:一般指this的指向,通常是調用的對象
call,apply主要是實現繼承其他對象的方法和屬性,如果當前對象已經有從父對象繼承過來的屬性或者方法,那么父對象的屬性或者方法會被覆蓋
查看全部 -
參數處理小利器
querystring.stringify({})? 里面是對象
querystring.parse("")? ?里面是字符串
查看全部 -
地址解析的幫手
url.parse()
url.format()
url.resolve()
查看全部 -
object.method.call(xxxObj, args) : 這里的xxxObj是用來取代method里的this的, args依舊是method的參數
查看全部 -
這里面還有的是面向對象的那部分涉及到this指向和指向改變,甚至還有一部分原型和原型鏈相關的東西。
查看全部 -
這一部分實際上就是js里面相關的那部分關于作用域以及this指向那一部分。
查看全部 -
就是parse和stringfy就是對象轉字符串和字符串轉對象的,里面至少能傳至少三個參數,主要是不同對之間的分隔方式,以及一對里面的分隔方式,parse里面還有一個隊個數的限制。一般默認對之間用,和&,對之內用=和:。但這個方法只是對對象的不同形式而言。?
查看全部 -
由于此視頻是在之前完成的,現在的慕課遵循的是https協議,所以按照老師的寫法來完成的話,狀態碼是400,具體該怎么寫,我還不知道
查看全部
舉報