<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[狐耳]]></title><description><![CDATA[To be a Master !]]></description><link>https://blog.youkuaiyun.com/Master_bigRabbit</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Master_bigRabbit]]></copyright><item><title><![CDATA[HTML5 之 离线缓存]]></title><link>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88375822</link><guid>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88375822</guid><author>Master_bigRabbit</author><pubDate>Sun, 10 Mar 2019 12:41:59 +0800</pubDate><description><![CDATA[HTML5的离线缓存又被称为应用缓存（application cache），为专门开发web离线应用而设计的，使web应用在离线的情况下仍能正常显示页面。虽然离线状态下不能进行一些和服务器的交互操作，但是缓存页面可加快下次访问的速度，减少下次访问时的服务请求，减轻服务器的压力。


Appcache是从浏览器的缓存中划分出一块空间，使用manifest描述文件列出想要缓存的资源，将资源缓存到该空...]]></description><category></category></item><item><title><![CDATA[JS 之 创建对象]]></title><link>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88250361</link><guid>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88250361</guid><author>Master_bigRabbit</author><pubDate>Wed, 06 Mar 2019 22:39:20 +0800</pubDate><description><![CDATA[虽然我们可以通过Object构造函数或者字面量的方式创建单个对象，但它有个明显的缺点：使用同一个接口创建很多对象，会产生大量的重复代码。

接下来我们来讲解一下创建对象的四种方式。

1、工厂模式

工厂模式是一种非常重要的设计模式，有很多实际应用。在ECMAScript中无法创建类，但可以通过工厂模式来抽象具体对象的创建过程，用工厂函数封装以特定接口创建对象的细节 。


function cr...]]></description><category></category></item><item><title><![CDATA[JS 之 执行环境和作用域链]]></title><link>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88242428</link><guid>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88242428</guid><author>Master_bigRabbit</author><pubDate>Wed, 06 Mar 2019 18:03:32 +0800</pubDate><description><![CDATA[执行环境在JavaScript中是一个非常重要的概念。执行环境定义了变量或函数访问其他数据的权限和行为，每个执行环境都有一个与之相关联的变量对象。在该执行环境下定义的变量和函数都被保存在这个变量对象中。


执行环境的分类：全局执行环境、局部执行环境

1、全局执行环境

全局执行环境是处于最外围的执行环境。在浏览器中，全局执行环境就是window对象，在全局作用域下定义的变量和函数都是wind...]]></description><category></category></item><item><title><![CDATA[JS 之 理解对象]]></title><link>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88203798</link><guid>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88203798</guid><author>Master_bigRabbit</author><pubDate>Tue, 05 Mar 2019 22:55:13 +0800</pubDate><description><![CDATA[今天翻了翻红宝书中关于对象的一章，我屮艸芔茻！！！！！！！

首先来一个创建自定义对象的基本方法：


var person = new Object();
person.name=&quot;rabbit&quot;;
person.age=18;
person.sex=&quot;female&quot;;
person.sayName=function(){
    alert(this.name);
}

字面量创建对象：


...]]></description><category></category></item><item><title><![CDATA[JS 之 Function类型]]></title><link>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88166884</link><guid>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88166884</guid><author>Master_bigRabbit</author><pubDate>Tue, 05 Mar 2019 12:33:02 +0800</pubDate><description><![CDATA[在JS中，函数都是对象，都是Function类型的实例，有自己的属性和方法。因此函数名也像其他引用类型一样，是一个指向函数对象的指针。

定义函数有三种方式：

1、函数声明（有函数声明提升）


function add(num1,num2){
    return num1+num2;
}

2、函数表达式（无函数声明提升）


var add=function(num1,num2){
   ...]]></description><category></category></item><item><title><![CDATA[JS自定义函数库 之 跨浏览器获取XMLHttpRequest对象]]></title><link>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88138220</link><guid>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88138220</guid><author>Master_bigRabbit</author><pubDate>Mon, 04 Mar 2019 20:55:39 +0800</pubDate><description><![CDATA[function getXMLHttpRequest(){
    
    if(typeof XMLHttpRequest != &quot;function&quot;){
        XMLHttpRequest=function(){
            try{ return new ActiveXObject(&quot;Msxml2.XMLHTTP.6.0&quot;); }catch(e){}
       ...]]></description><category></category></item><item><title><![CDATA[JS自定义封装库 之 样式操作]]></title><link>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88094322</link><guid>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88094322</guid><author>Master_bigRabbit</author><pubDate>Sun, 03 Mar 2019 21:25:38 +0800</pubDate><description><![CDATA[1、添加Class


function addClass(target,className){
    if(!target.className){
        target.className = className;
    }else{
        var newClass=target.className;
        newClass+=&quot; &quot;;
        newCl...]]></description><category></category></item><item><title><![CDATA[JS自定义封装库 之 表单增强]]></title><link>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88094075</link><guid>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88094075</guid><author>Master_bigRabbit</author><pubDate>Sun, 03 Mar 2019 21:12:51 +0800</pubDate><description><![CDATA[1、斑马线表单


.ml-table{
        margin:0 auto;
        border:1px solid #699;
    }
.ml-table caption{
        margin:0 auto;
        padding:0.2em;
        font-size:1.2em;
        font-weight:bold;
   ...]]></description><category></category></item><item><title><![CDATA[JS自定义封装库 之 DOM节点操作]]></title><link>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88093106</link><guid>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88093106</guid><author>Master_bigRabbit</author><pubDate>Sun, 03 Mar 2019 20:21:52 +0800</pubDate><description><![CDATA[1、向某节点后面插入节点


function insertAfter(newElement,targetElement){

    var parentElement=targetElement.parentNode;        //获取目标节点的父节点
    if(parentElement.lastChild == targetElement){
        parentElem...]]></description><category></category></item><item><title><![CDATA[JS自定义封装库 之 事件操作]]></title><link>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88092897</link><guid>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88092897</guid><author>Master_bigRabbit</author><pubDate>Sun, 03 Mar 2019 20:09:38 +0800</pubDate><description><![CDATA[1、向window.onload追加事件


function addLoadEvent(func){
    var oldEvent=window.onload;
    if(typeof window.onload != &quot;function&quot;){        //说明还没有添加事件
        window.onload=func;
    }else{
        window...]]></description><category></category></item><item><title><![CDATA[JS试题-----关于预编译]]></title><link>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88083022</link><guid>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88083022</guid><author>Master_bigRabbit</author><pubDate>Sat, 02 Mar 2019 23:16:19 +0800</pubDate><description><![CDATA[这个题设涉及预编译和一些零碎的知识点。

1、生成全局对象GO

2、寻找变量声明 GO={ foo:undefined }

3、寻找函数声明 GO={ foo:undefined , 匿名:function(){} }

4、执行 foo={ n:1}

5、执行匿名函数前先生成活动对象AO

6、寻找形参和变量声明 AO={ foo:undefined }var foo声明提前，给一个...]]></description><category></category></item><item><title><![CDATA[JS类型转换]]></title><link>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88081356</link><guid>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88081356</guid><author>Master_bigRabbit</author><pubDate>Sat, 02 Mar 2019 22:00:54 +0800</pubDate><description><![CDATA[一、数值转换

JS 有三种方法可以将非数值类型转换为数值类型

Number( )：适用于任意数据类型。

parseInt( ) 和 parseFloat( )：只适用于将字符串转换为数值类型。

1、Number(arg )

（1）arg为Boolean ，true---&amp;gt;1 false---&amp;gt;0

（2）arg为null，返回0

（3）arg为undefined，返回Na...]]></description><category></category></item><item><title><![CDATA[JS预编译]]></title><link>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88046897</link><guid>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88046897</guid><author>Master_bigRabbit</author><pubDate>Fri, 01 Mar 2019 16:31:01 +0800</pubDate><description><![CDATA[引入：


function a(){
    console.log(&quot;a&quot;);
}
a();        //输出&quot;a&quot;

b();        //输出&quot;b&quot;
function b(){
    console.log(&quot;b&quot;);
} 

c();        //报错，c is not a function
var c=function(){
    console.log(&quot;cc&quot;...]]></description><category></category></item><item><title><![CDATA[TCP协议三次握手与四次挥手]]></title><link>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88031102</link><guid>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88031102</guid><author>Master_bigRabbit</author><pubDate>Thu, 28 Feb 2019 16:22:07 +0800</pubDate><description><![CDATA[其实该过程就像一次打电话前去拜访

三次握手：

1、客户端：“喂？服务器么，我今天要去拜访你。” SYN=1、seq = x

2、服务器：“哦，好的，我去门口接你。”       SYN=1、ACK=1、seq=y、ack=x+1

3、客户端：“我到了，你真客气，我要进来了。”  ACK=1、seq=x+1、ack=y+1

客户端主动打开，服务器被动打开。

参数：

...]]></description><category></category></item><item><title><![CDATA[浏览器渲染原理和流程]]></title><link>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88026252</link><guid>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/88026252</guid><author>Master_bigRabbit</author><pubDate>Thu, 28 Feb 2019 14:53:57 +0800</pubDate><description><![CDATA[今天碰到一个问题，要谈一下浏览器的渲染过程。于是今天去学习了一下，在此做了总结。

浏览器的内部都有一个叫做渲染引擎的东西，负责渲染呈现网页的内容，不同的浏览器有不同的渲染引擎。一般情况下，渲染引擎可以显示HTML，CSS，JS，XML和一些媒体数据，像一些ＷORD,PDF之类的也可以用一些专用插件渲染。

基本流程

1、渲染引擎通过网络获得文档的内容

2、解析HTML，构成DOM树

3、解...]]></description><category></category></item><item><title><![CDATA[Cookie学习记录]]></title><link>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/87988105</link><guid>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/87988105</guid><author>Master_bigRabbit</author><pubDate>Wed, 27 Feb 2019 21:17:51 +0800</pubDate><description><![CDATA[本篇博客作为Cookie的学习记录，我有幸看到Andrew.Zhou的一篇博客，内容详实，对我有很大帮助，于是借鉴整理一番，在此做出感谢，如有侵权，联系删除。

原文地址：https://www.cnblogs.com/andy-zhou/p/5360107.html#_caption_0



浏览器和服务器之间进行通信的时候使用的是HTTP协议，因为HTTP是无状态的协议，服务器不会存储客户端...]]></description><category></category></item><item><title><![CDATA[HTTP协议]]></title><link>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/87977046</link><guid>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/87977046</guid><author>Master_bigRabbit</author><pubDate>Wed, 27 Feb 2019 17:04:04 +0800</pubDate><description><![CDATA[HTTP协议定义了浏览器（万维网客户端）如何向万维网服务器请求万维网文档，以及服务器怎样把文档发送给客户端。

万维网的工作过程：

每个万维网站点都有一个服务器进程，该进程一直在监听TCP协议的80端口，看是否有连接请求。如果有连接建立请求，则与之建立起TCP连接，然后客户端向服务器发起访问某页面的请求，服务器就将该页面作为响应返回给客户端，然后释放TCP连接。

HTTP协议的特点：无连接、无...]]></description><category></category></item><item><title><![CDATA[JS 之 基本类型和引用类型]]></title><link>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/87902782</link><guid>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/87902782</guid><author>Master_bigRabbit</author><pubDate>Sun, 24 Feb 2019 15:26:20 +0800</pubDate><description><![CDATA[前奏：在说明这两个类型之前先简单说一下“堆”和“栈”。

 栈：由编译器自动分配和释放，如函数参数、局部变量、临时变量，返回值等等。
 堆：由成员分配和释放，由程序员自己申请、自己释放。否则发生内存泄露。典型为使用new申请的堆内容。

栈空间一般大小固定，能够分配的空间比较小，由系统自动分配，速度较快。

堆空间适合不清楚所要的空间有多大的情况下，需要手工new出来，开销大，容易产生内存碎片。
...]]></description><category></category></item><item><title><![CDATA[JS 之 call（）函数]]></title><link>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/87901716</link><guid>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/87901716</guid><author>Master_bigRabbit</author><pubDate>Sun, 24 Feb 2019 13:01:57 +0800</pubDate><description><![CDATA[call(thisArg,arg1,arg2.....)

a.call(b)

b:&quot;喂？是a么，我这有点事儿办不了，你来帮帮我呗？&quot;。

a:&quot;OK，我来了！&quot;。


var g=&quot;全局变量&quot;;
//构造函数
function A(){
	this.g=&quot;构造函数A中的变量&quot;;
}
//普通函数
function print(){
	console.log(this.g);
}
print.c...]]></description><category></category></item><item><title><![CDATA[JS之hasOwnProperty（）学习记录]]></title><link>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/87900239</link><guid>https://blog.youkuaiyun.com/Master_bigRabbit/article/details/87900239</guid><author>Master_bigRabbit</author><pubDate>Sun, 24 Feb 2019 09:44:40 +0800</pubDate><description><![CDATA[hasOwnProperty(prop)

从字面上理解，就是检测是否有属于自己私有的属性，而不是公共的。

所以这个方法可以用来检测一个对象是否含有特定的自身属性，该方法会忽略掉那些从原型链上继承到的属性。

例如：


var car=new Object();
car.speed=10;
alert(car.hasOwnProperty('speed'));        //弹出true
...]]></description><category></category></item></channel></rss>