<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hiahdnf的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hiahdnf</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hiahdnf]]></copyright><item><title><![CDATA[手写Promise]]></title><link>https://blog.youkuaiyun.com/hiahdnf/article/details/126149470</link><guid>https://blog.youkuaiyun.com/hiahdnf/article/details/126149470</guid><author>hiahdnf</author><pubDate>Wed, 03 Aug 2022 21:36:55 +0800</pubDate><description><![CDATA[手写Promis]]></description><category></category></item><item><title><![CDATA[手写AJAX]]></title><link>https://blog.youkuaiyun.com/hiahdnf/article/details/125968068</link><guid>https://blog.youkuaiyun.com/hiahdnf/article/details/125968068</guid><author>hiahdnf</author><pubDate>Mon, 25 Jul 2022 09:12:12 +0800</pubDate><description><![CDATA[手写ajax]]></description><category></category></item><item><title><![CDATA[手写发布订阅]]></title><link>https://blog.youkuaiyun.com/hiahdnf/article/details/125967791</link><guid>https://blog.youkuaiyun.com/hiahdnf/article/details/125967791</guid><author>hiahdnf</author><pubDate>Mon, 25 Jul 2022 08:55:21 +0800</pubDate><description><![CDATA[手写发布订阅]]></description><category></category></item><item><title><![CDATA[手写节流 throttle、防抖 debounce]]></title><link>https://blog.youkuaiyun.com/hiahdnf/article/details/125967427</link><guid>https://blog.youkuaiyun.com/hiahdnf/article/details/125967427</guid><author>hiahdnf</author><pubDate>Mon, 25 Jul 2022 07:57:06 +0800</pubDate><description><![CDATA[手写节流防抖]]></description><category></category></item><item><title><![CDATA[JS如何实现继承]]></title><link>https://blog.youkuaiyun.com/hiahdnf/article/details/125967412</link><guid>https://blog.youkuaiyun.com/hiahdnf/article/details/125967412</guid><author>hiahdnf</author><pubDate>Mon, 25 Jul 2022 07:41:21 +0800</pubDate><description><![CDATA[js实现继承的方法]]></description><category></category></item><item><title><![CDATA[常见七种方式实现垂直居中]]></title><link>https://blog.youkuaiyun.com/hiahdnf/article/details/125840180</link><guid>https://blog.youkuaiyun.com/hiahdnf/article/details/125840180</guid><author>hiahdnf</author><pubDate>Mon, 18 Jul 2022 03:50:42 +0800</pubDate><description><![CDATA[css常见7种方式实现垂直居中]]></description><category></category></item><item><title><![CDATA[Vue 中的 .sync 修饰符有什么用]]></title><link>https://blog.youkuaiyun.com/hiahdnf/article/details/123537238</link><guid>https://blog.youkuaiyun.com/hiahdnf/article/details/123537238</guid><author>hiahdnf</author><pubDate>Thu, 17 Mar 2022 12:49:31 +0800</pubDate><description><![CDATA[vue中的.sync修饰符
在Vue中，子父组件最常用的通信方式就是通过props进行数据传递，props值只能在父组件中更新并传递给子组件，在子组件内部，是不允许改变传递进来的props值，这样做是为了保证数据单向流通。但有时候，我们会遇到一些场景，需要在子组件内部改变props属性值并更新到父组件中，这时就需要用到.sync修饰符。

在下面demo中，通过定义一个Child子组件并设置name属性来显示一句欢迎语，当点击按钮时，通过在父组件中来改变name属性的值；当点击欢迎语时，则通过在Child子]]></description><category></category></item><item><title><![CDATA[对 Vue 数据响应式的理解]]></title><link>https://blog.youkuaiyun.com/hiahdnf/article/details/123476398</link><guid>https://blog.youkuaiyun.com/hiahdnf/article/details/123476398</guid><author>hiahdnf</author><pubDate>Mon, 14 Mar 2022 13:28:02 +0800</pubDate><description><![CDATA[数据响应式概念

响应式即对外界的变化做出的反应的一种形式。
const vm = new Vue({data:{n: 0}})
当修改 vm.n 或 data.n 时，render(data…) 中的 n 就会做出响应的响应。
这个联动的过程就是 vue 的 数据响应式。
vue 目前通过 Object.defineProperty 来实现数据响应式
vm相当于data的代理

Vue响应式方法
Object.defineProperty

可以给对象添加属性value
可以给对象添加getter/set]]></description><category></category></item><item><title><![CDATA[Vue 两个版本的区别和使用方法]]></title><link>https://blog.youkuaiyun.com/hiahdnf/article/details/123238976</link><guid>https://blog.youkuaiyun.com/hiahdnf/article/details/123238976</guid><author>hiahdnf</author><pubDate>Wed, 02 Mar 2022 20:17:49 +0800</pubDate><description><![CDATA[两个版本对应的文件名
就是vue的完整版和非完整版

vue.js
vue.runtime.js

建议去用BootCDN的
BootCDN的网站链接
区别

template 和 render 怎么用
vue完整版template的使用，直接写到html里面，或者javascript里面
&lt;template&gt;
  &lt;div id="app"&gt;
    {{n}}
    &lt;button @click="add"&gt;+1&lt;/button&gt;
  &lt;/div&]]></description><category></category></item><item><title><![CDATA[浅析 MVC]]></title><link>https://blog.youkuaiyun.com/hiahdnf/article/details/121200597</link><guid>https://blog.youkuaiyun.com/hiahdnf/article/details/121200597</guid><author>hiahdnf</author><pubDate>Mon, 08 Nov 2021 06:16:20 +0800</pubDate><description><![CDATA[一、MVC介绍
MVC是一种机构设计模式，主要分为三部分，分别为：M（model）、V（view）和C（controller）二、MVC 三个对象分别做什么，给出伪代码示例       M（model）主要用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法，会有一个或多个视图监听模型。一旦模型的数据发生改变，模型将通知有关的视图。
二、MVC 三个对象分别做什么，给出伪代码示例
Model的样例：
const m = {
   data:{ 程序所需要的数据 },
   create(){ 增加数据]]></description><category></category></item><item><title><![CDATA[说说你对前端的理解]]></title><link>https://blog.youkuaiyun.com/hiahdnf/article/details/120440968</link><guid>https://blog.youkuaiyun.com/hiahdnf/article/details/120440968</guid><author>hiahdnf</author><pubDate>Thu, 23 Sep 2021 18:49:16 +0800</pubDate><description><![CDATA[大多数人对前端的认识可能是写点简单的 HTML，CSS 样式，制作点网页界面，其实不然。
2005 年之前，前端开发这个词还是很少见的，尤其在国内。但近几年的前端可谓是飞速发展，在没有前端岗位之前，一个项目中负责后台功能逻辑处理的代码和前端页面展示代码混在一起，不免会给开发和维护带来各种问题，渐渐的许多大中小公司开始把前后端的界限分的越来越明确，前端工程师只管前端的事情，后端工程师只管后端的事情。
前端工程师的主要工作就是通过代码方式，增强系统的交互功能 ，同时结合后台开发技术，进行互联网的 Web 和 A]]></description><category></category></item><item><title><![CDATA[说说跨域]]></title><link>https://blog.youkuaiyun.com/hiahdnf/article/details/120440645</link><guid>https://blog.youkuaiyun.com/hiahdnf/article/details/120440645</guid><author>hiahdnf</author><pubDate>Thu, 23 Sep 2021 18:47:22 +0800</pubDate><description><![CDATA[1.什么是跨域？
跨域，指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的，是浏览器对javascript施加的安全限制。
1.1关于跨域的几个问题?
为什么a.wang.com访问wang.com也算跨域？
因为历史上，出现过不同的公司共用域名，a.wang.com和wang.com不一定是同一个网站，浏览器谨慎起见，认为这是不同的源。
为什么不同端口也算跨域？
原因同上，一个端口一个公司的情况也不是没有的。
记住：安全链条的强度取决于最弱的一环，所有和安全相关的问题都要谨慎对待。
为什么两]]></description><category></category></item><item><title><![CDATA[你对 Promise 的了解？]]></title><link>https://blog.youkuaiyun.com/hiahdnf/article/details/120440524</link><guid>https://blog.youkuaiyun.com/hiahdnf/article/details/120440524</guid><author>hiahdnf</author><pubDate>Thu, 23 Sep 2021 18:24:44 +0800</pubDate><description><![CDATA[1.Promise 的用途
Promise 是异步编程的一种解决方案，所谓Promise，简单说就是一个容器，里面保存着某个未来才会结束的事件（通常是一个异步操作）的结果。从语法上说，Promise 是一个对象，从它可以获取异步操作的消息。Promise 提供统一的 API，各种异步操作都可以用同样的方法进行处理。
2.如何创建一个 new Promise
const promise = new Promise(function(resolve, reject) {
  // ... some code

]]></description><category></category></item><item><title><![CDATA[数组排序]]></title><link>https://blog.youkuaiyun.com/hiahdnf/article/details/120440462</link><guid>https://blog.youkuaiyun.com/hiahdnf/article/details/120440462</guid><author>hiahdnf</author><pubDate>Thu, 23 Sep 2021 18:15:41 +0800</pubDate><description><![CDATA[给出正整数数组 array = [2,1,5,3,8,4,9,5]
请写出一个函数 sort，使得 sort(array) 得到从小到大排好序的数组 [1,2,3,4,5,5,8,9]
新的数组可以是在 array 自身上改的，也可以是完全新开辟的内存。
不得使用 JS 内置的 sort API
let minIndex = (numbers) =&gt; {
    let index = 0;
    for (let i = 0; i &lt; numbers.length; i++) {
     ]]></description><category></category></item><item><title><![CDATA[你如何理解 JS 的继承？]]></title><link>https://blog.youkuaiyun.com/hiahdnf/article/details/120440397</link><guid>https://blog.youkuaiyun.com/hiahdnf/article/details/120440397</guid><author>hiahdnf</author><pubDate>Thu, 23 Sep 2021 18:12:07 +0800</pubDate><description><![CDATA[一.基于原型链的继承
基本原理是：将父类的实例赋值给子类的原型。
 // 父类
 function Staff() {    
   this.company = 'tianchuang';
   this.list = [];
 }
 // 父类的原型
 Staff.prototype.getComName = function() {
  return this.company;
 };

// 子类
     function Coder(name, skill) {
       this.name]]></description><category></category></item><item><title><![CDATA[DOM 事件相关]]></title><link>https://blog.youkuaiyun.com/hiahdnf/article/details/120440171</link><guid>https://blog.youkuaiyun.com/hiahdnf/article/details/120440171</guid><author>hiahdnf</author><pubDate>Thu, 23 Sep 2021 18:07:47 +0800</pubDate><description><![CDATA[什么是事件委托？
怎么阻止默认动作？
怎么阻止事件冒泡？

1.什么是事件委托？
事件委托也称之为事件代理（Event Delegation）。是JavaScript中常用绑定事件的常用技巧。顾名思义，“事件代理”即是把原本需要绑定在子元素的响应事件委托给父元素，让父元素担当事件监听的职务。事件代理的原理是DOM元素的事件冒泡。
举例：比如一个宿舍的同学同时快递到了，一种方法就是他们一个个去领取，还有一种方法就是把这件事情委托给宿舍长，让一个人出去拿好所有快递，然后再根据收件人一
一分发给每个宿舍同学； .]]></description><category></category></item><item><title><![CDATA[著名面试题： 如何实现数组去重？]]></title><link>https://blog.youkuaiyun.com/hiahdnf/article/details/120440041</link><guid>https://blog.youkuaiyun.com/hiahdnf/article/details/120440041</guid><author>hiahdnf</author><pubDate>Thu, 23 Sep 2021 17:55:33 +0800</pubDate><description><![CDATA[著名面试题：
如何实现数组去重？
假设有数组 array = [1,5,2,3,4,2,3,1,3,4]
你要写一个函数 unique，使得
unique(array) 的值为 [1,5,2,3,4]
也就是把重复的值都去掉，只保留不重复的值。
方法一
不使用 Set，借鉴计数排序的原理
unique = (array) =&gt; {
const hash = []
for(let i=0;i&lt;array.length; i++){
hash[array[i]] = true
}
const res]]></description><category></category></item><item><title><![CDATA[请说出至少 10 个 HTTP 状态码，并描述各状态码的意义。]]></title><link>https://blog.youkuaiyun.com/hiahdnf/article/details/120439977</link><guid>https://blog.youkuaiyun.com/hiahdnf/article/details/120439977</guid><author>hiahdnf</author><pubDate>Thu, 23 Sep 2021 17:50:50 +0800</pubDate><description><![CDATA[状态码400 表示客户端请求的语法错误，服务器无法理解
状态码401 表示请求要求用户的身份认证
状态码402 表示保留，将来使用
状态码403 表示服务器理解请求客户端的请求，但是拒绝执行此请求
状态码404 表示服务器无法根据客户端的请求找到资源（网页）。
通过此代码，网站设计人员可设置"您所请求的资源无法找到"的个性页面
状态码405 表示客户端请求中的方法被禁止
状态码406 表示服务器无法根据客户端请求的内容特性完成请求
状态码407 表示请求要求代理的身份认证，与401类似，但请求者应当使用代.]]></description><category></category></item><item><title><![CDATA[call、apply、bind的用法分别是什么？]]></title><link>https://blog.youkuaiyun.com/hiahdnf/article/details/120439925</link><guid>https://blog.youkuaiyun.com/hiahdnf/article/details/120439925</guid><author>hiahdnf</author><pubDate>Thu, 23 Sep 2021 17:49:16 +0800</pubDate><description><![CDATA[call：call 是函数的正常调用方式，并指定上下文 this。
apply：apply 的作用和 call 一样，只是在调用的时候，传参数的方式不同。区别是 apply 接受的是数组参数，call 接受的是连续参数。如下代码：
function add(x,y){
    return x+y;
}
add.call(add, 1, 2); //3
add.apply(add, [1, 2]); //3

bind：bind 接受的参数跟 call 一致，只是 bind 不会立即调用，它会生成一个新的函]]></description><category></category></item><item><title><![CDATA[什么是闭包？闭包的用途是什么？闭包的缺点是什么？]]></title><link>https://blog.youkuaiyun.com/hiahdnf/article/details/120439740</link><guid>https://blog.youkuaiyun.com/hiahdnf/article/details/120439740</guid><author>hiahdnf</author><pubDate>Thu, 23 Sep 2021 17:47:09 +0800</pubDate><description><![CDATA[什么是闭包？闭包的用途是什么？闭包的缺点是什么？
1.什么是闭包
理解闭包，首先必须理解变量作用域。JavaScript 有两种作用域：全局作用域和函数作用域。函数内部可以直接读取全局变量。

下面代码中，函数f1可以读取全局变量n。
var n = 111;
function f1() {
  console.log(n);
}
f1() //111

函数f1内部声明的变量n，函数外是无法读取的。
如果出于种种原因，需要得到函数内的局部变量。只有通过变通方法才能实现。那就是在函数的内部，再定义一个函数。]]></description><category></category></item></channel></rss>