<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ZZhXuan的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ZZhXuan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ZZhXuan]]></copyright><item><title><![CDATA[为什么是“Array.prototype.slice.call(arguments,1)”，而不是“arguments.slice(1)”？]]></title><link>https://blog.youkuaiyun.com/ZZhXuan/article/details/120954832</link><guid>https://blog.youkuaiyun.com/ZZhXuan/article/details/120954832</guid><author>ZZhXuan</author><pubDate>Mon, 25 Oct 2021 16:43:11 +0800</pubDate><description><![CDATA[在学习手写new的时候，看到的，首先是很不理解为什么通过Array.propotype调用slice，还要用call“多此一举”。
昨天学习原型链，我的理解中，
Array.prototype等同于一个实例数组（比如参数数组argument）的原型_proto_，
在原型中寻找slice方法并进行使用，跟后者arguments直接调用slice不是一样的吗？
以下是我所学习的手写new的代码（问题出于第五行）。
// const xxx = _new(Foo,'哈哈',123)  ==&gt; new Fo]]></description><category></category></item><item><title><![CDATA[cookies、sessionStorage和localStorage解释及区别]]></title><link>https://blog.youkuaiyun.com/ZZhXuan/article/details/119821816</link><guid>https://blog.youkuaiyun.com/ZZhXuan/article/details/119821816</guid><author>ZZhXuan</author><pubDate>Fri, 20 Aug 2021 14:34:55 +0800</pubDate><description><![CDATA[转载自此文：《cookies、sessionStorage和localStorage解释及区别》
目录一、cookie和session   两者区别：1、保持状态：2、使用方式：（1）cookie机制（2）session机制3、存储内容：4、存储的大小：5、安全性：session的安全性大于cookie原因如下：6、应用场景：7、缺点：HTML5的本地存储第一种解释方式第二种解释方式WebStorage**两个主要目标**：1、生命周期：2、存储大小：3、存储位置：4、存储内容类型：5、获取方式：6、应用.]]></description><category></category></item><item><title><![CDATA[不容错过的ES6知识点（二）：字面量、函数]]></title><link>https://blog.youkuaiyun.com/ZZhXuan/article/details/117283971</link><guid>https://blog.youkuaiyun.com/ZZhXuan/article/details/117283971</guid><author>ZZhXuan</author><pubDate>Wed, 26 May 2021 10:59:10 +0800</pubDate><description><![CDATA[ES6模板字面量创建字符串函数用 ES6 编写简洁的函数声明补习构造函数和new原理手写new构造函数使用 class 语法定义构造函数使用 getter 和 setter 来控制对象的访问练习应用：
模板字面量创建字符串
`${变量}`

函数
用 ES6 编写简洁的函数声明
定义函数时省略function关键字和冒号
在 ES5 中，当我们需要在对象中定义一个函数的时候，必须像这样使用 function 关键字：
const person = {
  name: "Taylor",
  sayHello]]></description><category></category></item><item><title><![CDATA[不容错过的ES6知识点（一）：变量、函数、扩展操作符、解构赋值]]></title><link>https://blog.youkuaiyun.com/ZZhXuan/article/details/116796897</link><guid>https://blog.youkuaiyun.com/ZZhXuan/article/details/116796897</guid><author>ZZhXuan</author><pubDate>Fri, 14 May 2021 19:21:01 +0800</pubDate><description><![CDATA[首先给大家介绍一个网站： freeCodeCamp.
ES6变量var可以重复声明同一个变量Object.freeze：禁止对对象进行增删改操作函数使用箭头函数编写简洁的匿名函数设置函数的默认参数操作符、运算符理解spread运算符与rest参数rest 操作符(扩展操作符)reducer 函数使用 spread 运算符展开数组项解构赋值使用解构赋值来获取对象的值使用解构赋值从对象中分配变量使用解构赋值从嵌套对象中分配变量练习应用使用解构赋值配合 rest 操作符来重新分配数组元素练习应用使用解构赋值将对象]]></description><category></category></item><item><title><![CDATA[一些递归的练习-js]]></title><link>https://blog.youkuaiyun.com/ZZhXuan/article/details/116757868</link><guid>https://blog.youkuaiyun.com/ZZhXuan/article/details/116757868</guid><author>ZZhXuan</author><pubDate>Thu, 13 May 2021 17:21:19 +0800</pubDate><description><![CDATA[使用递归创建一个倒计时

函数返回一个从 1 到传递给函数的指定数字的连续数字数组。

递归函数，会有一个base case。 base case 告诉递归函数什么时候不在需要调用其自身。 这是简单 情况，返回得到的值。
还有recursive call，继续用不同的参数调用自身。 如果函数无误，一直执行直到 base case 为止。
比如，如果想写一个递归函数，返回一个数字 1 到 n 的连续数组。 这个函数需要接收一个参数 n 代表最终数字。 然后会持续的调用自身，传入一个比 n 更小的值一直到传入的]]></description><category></category></item><item><title><![CDATA[JS复习]]></title><link>https://blog.youkuaiyun.com/ZZhXuan/article/details/116749196</link><guid>https://blog.youkuaiyun.com/ZZhXuan/article/details/116749196</guid><author>ZZhXuan</author><pubDate>Thu, 13 May 2021 15:09:22 +0800</pubDate><description><![CDATA[这里写目录标题数组多维数组数据添加到数组末尾：push()移除最后一个，并将移除的值返回：pop()移入一个元素到数组的头部：unshift()移除第一个，并将移除的值返回：shift()字符串转义字符其他函数返回值var全局变量队列（排队）运算符相等运算符：`==`。||&amp;&amp;三元运算符switch对象概念、形式访问对象点号表示法（.）方括号表示法（[]）对象嵌套对象删除对象属性对象是否有某个属性： hasOwnProperty(propname)JSONMath()Math.random(]]></description><category></category></item><item><title><![CDATA[npm创建一个简单的项目]]></title><link>https://blog.youkuaiyun.com/ZZhXuan/article/details/116091980</link><guid>https://blog.youkuaiyun.com/ZZhXuan/article/details/116091980</guid><author>ZZhXuan</author><pubDate>Sat, 24 Apr 2021 15:12:25 +0800</pubDate><description><![CDATA[npm init

然后生成一个packsge.json文件

npm install fetch-jsonp --save（这个save是npm6一下的版本需要加的）


parcel打包工具
npm install -g parcel-bundler

命令：
parcel index.html			// 运行


https://bootswatch.com/  里面有很多框架可以用

...]]></description><category></category></item><item><title><![CDATA[1、页面导入样式时，使用link和@import有什么区别？2、浏览器内核]]></title><link>https://blog.youkuaiyun.com/ZZhXuan/article/details/115819848</link><guid>https://blog.youkuaiyun.com/ZZhXuan/article/details/115819848</guid><author>ZZhXuan</author><pubDate>Sun, 18 Apr 2021 10:14:50 +0800</pubDate><description><![CDATA[页面导入样式时，使用link和@import有什么区别？
页面中使用CSS的方式主要有3种：行内添加定义style属性值，页面头部内嵌调用和外面链接调用，其中外面引用有两种：link和@import。外部引用CSS两种方式link和@import的方式分别是：
XML/HTML代码
XML/HTML代码

两者都是外部引用CSS的方式，但是存在一定的区别：
区别1：link是XHTML标签，除了加载CSS外，还可以定义RSS等其他事务；@import属于CSS范畴，只能加载CSS。
区别2：link引用CS]]></description><category></category></item><item><title><![CDATA[parcel使用心得]]></title><link>https://blog.youkuaiyun.com/ZZhXuan/article/details/115525262</link><guid>https://blog.youkuaiyun.com/ZZhXuan/article/details/115525262</guid><author>ZZhXuan</author><pubDate>Thu, 08 Apr 2021 16:58:47 +0800</pubDate><description><![CDATA[是跟着别人的代码视频敲得。他们打包的时候，不会再后面带上index.html。
但是实践得知，不管是打包还是运行，都要有index.html这个目标。
运行
parcel index.html 

打包
parcel build .\index.html


]]></description><category></category></item><item><title><![CDATA[关于js报错 Cannot read property innerHTML of null和关于Cannot set property ‘innerHTML’ of null 错误原因]]></title><link>https://blog.youkuaiyun.com/ZZhXuan/article/details/115493489</link><guid>https://blog.youkuaiyun.com/ZZhXuan/article/details/115493489</guid><author>ZZhXuan</author><pubDate>Wed, 07 Apr 2021 19:33:43 +0800</pubDate><description><![CDATA[解决关于js报错 Cannot read property innerHTML of null
1、相信很多同学在开发过程中都会遇到
Cannot read property ‘innerHTML’ of null ——这个报错的字面含义是：不能读取空的内部HTML。
2、实际上，在页面的HTML结构中，innerHTML是有实际的值并可以在console进行获取查询到。
3、根据浏览器的渲染原理，HTML代码从上到下执行代码，当浏览器JS解析器解析到script并进行DOM操作，下面的DOM结构还没有进行]]></description><category></category></item><item><title><![CDATA[ES6，面向对象，构造函数，继承]]></title><link>https://blog.youkuaiyun.com/ZZhXuan/article/details/113661646</link><guid>https://blog.youkuaiyun.com/ZZhXuan/article/details/113661646</guid><author>ZZhXuan</author><pubDate>Thu, 04 Feb 2021 18:14:38 +0800</pubDate><description><![CDATA[首先说一下老版本的面向对象是什么样子的
主要是构造函数和继承是什么样的

1.类和构造函数一样
2.属性和方法分开写的

老版本构造函数
// 创建类（构造函数）
function User(name) {
    this.name = name
}
// prototype的运用，创建方法
User.prototype.showName = function () {
    console.log(this.name)
}
// 创建实例
var u1 = new User('able')
// 调用]]></description><category></category></item><item><title><![CDATA[bable.js是什么]]></title><link>https://blog.youkuaiyun.com/ZZhXuan/article/details/113660156</link><guid>https://blog.youkuaiyun.com/ZZhXuan/article/details/113660156</guid><author>ZZhXuan</author><pubDate>Thu, 04 Feb 2021 17:52:23 +0800</pubDate><description><![CDATA[browers=bable

为了把高版本的ES6编译成低版本的，以供浏览器读取顺利
有两个方法

引入本地bable。（不建议）容易出事儿，比如延迟，或者某些奇奇怪怪的问题
在线编译bable。（建议）


引入本地：（不建议）
// 1.引入babel包
&lt;script src="browser.min.js" charset="utf-8"&gt;&lt;/script&gt;
// 2.修改类型
&lt;script type="text/babel"&gt;
&lt;/script&gt;
]]></description><category></category></item><item><title><![CDATA[ES6数组新方法：map，reduce，filter，foreach]]></title><link>https://blog.youkuaiyun.com/ZZhXuan/article/details/113659983</link><guid>https://blog.youkuaiyun.com/ZZhXuan/article/details/113659983</guid><author>ZZhXuan</author><pubDate>Thu, 04 Feb 2021 17:50:33 +0800</pubDate><description><![CDATA[新增4个方法
map 映射 一个对一个
定义数组：
let arr = [12, 5, 8]

map应用初版：
let result = arr.map(function (item) {
    return item*2
})
console.log(result)//结果：[ 24, 10, 16 ]

简写版本：
let result2 = arr.map(item=&gt;item*2) // 简写
console.log(result2)//结果：[ 24, 10, 16 ]

还可以：
le]]></description><category></category></item><item><title><![CDATA[HttpServletResponse实现重定向]]></title><link>https://blog.youkuaiyun.com/ZZhXuan/article/details/111418949</link><guid>https://blog.youkuaiyun.com/ZZhXuan/article/details/111418949</guid><author>ZZhXuan</author><pubDate>Sun, 20 Dec 2020 14:54:28 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[HttpServletRequest]]></title><link>https://blog.youkuaiyun.com/ZZhXuan/article/details/111416551</link><guid>https://blog.youkuaiyun.com/ZZhXuan/article/details/111416551</guid><author>ZZhXuan</author><pubDate>Sun, 20 Dec 2020 13:57:31 +0800</pubDate><description><![CDATA[是

]]></description><category></category></item><item><title><![CDATA[HttpServletResponse]]></title><link>https://blog.youkuaiyun.com/ZZhXuan/article/details/111416544</link><guid>https://blog.youkuaiyun.com/ZZhXuan/article/details/111416544</guid><author>ZZhXuan</author><pubDate>Sun, 20 Dec 2020 13:57:18 +0800</pubDate><description><![CDATA[响应状态码：（记住这些就够了，不会的百度）


前四个就是一些字符串游戏
后四个是IO流，怎么把一个东西从一个地方输出到另一个地方

后续指路：
视频第十二集，Response下载文件.
回头再更

...]]></description><category></category></item><item><title><![CDATA[ServletContext对象]]></title><link>https://blog.youkuaiyun.com/ZZhXuan/article/details/111410505</link><guid>https://blog.youkuaiyun.com/ZZhXuan/article/details/111410505</guid><author>ZZhXuan</author><pubDate>Sun, 20 Dec 2020 13:45:21 +0800</pubDate><description><![CDATA[这里写目录标题getInitialParameter()getServletConfig()getServletContext()
一些需要了解的对象
这些对象可以得到的东西在注释中

getInitialParameter()
其中，getInitialParameter（）的初始化参数可以在Web.xml中配置
这个配置几乎不用


getServletConfig()
就是Web.xml中的配置
getServletContext()

就是，这个网站就由这个对象来管理

...]]></description><category></category></item><item><title><![CDATA[Servlet]]></title><link>https://blog.youkuaiyun.com/ZZhXuan/article/details/111405317</link><guid>https://blog.youkuaiyun.com/ZZhXuan/article/details/111405317</guid><author>ZZhXuan</author><pubDate>Sat, 19 Dec 2020 16:49:28 +0800</pubDate><description><![CDATA[补充：


一个servlet对应一个class

上图意思是，在前端请求一个路径/hello，他就回去12行的class那边的路径处理
下图是12行的class，里面有处理请求的方式


tomcat配置方式指路：
在这篇文章里.

...]]></description><category></category></item><item><title><![CDATA[MAVEN阿里云镜像+本地仓库+maven web项目创建（模板/普通）+tomcat配置+pom文件]]></title><link>https://blog.youkuaiyun.com/ZZhXuan/article/details/111387039</link><guid>https://blog.youkuaiyun.com/ZZhXuan/article/details/111387039</guid><author>ZZhXuan</author><pubDate>Fri, 18 Dec 2020 18:11:27 +0800</pubDate><description><![CDATA[&lt;mirror&gt;
         &lt;id&gt;nexus-aliyun&lt;/id&gt;
         &lt;mirrorOf&gt;*,!jeecg,!jeecg-snapshots&lt;/mirrorOf&gt;
         &lt;name&gt;Nexus aliyun&lt;/name&gt;
         &lt;url&gt;http://maven.aliyun.com/nexus/content/groups/public&lt;/url&gt;]]></description><category></category></item><item><title><![CDATA[本地项目上传到GitHub]]></title><link>https://blog.youkuaiyun.com/ZZhXuan/article/details/109852985</link><guid>https://blog.youkuaiyun.com/ZZhXuan/article/details/109852985</guid><author>ZZhXuan</author><pubDate>Fri, 20 Nov 2020 16:49:19 +0800</pubDate><description><![CDATA[创建一个项目（仓库）



填写相应信息后点击create即可
Repository name: 仓库名称
Description(可选): 仓库描述介绍
Public, Private : 仓库权限（公开共享，私有或指定合作者）
Initialize this repository with a README: 添加一个README.md
gitignore: 不需要进行版本管理的仓库类型，对应生成文件.gitignore
license: 证书类型，对应生成文件LICENSE



创建完成后的


.]]></description><category></category></item></channel></rss>