<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[宁静致远]]></title><description><![CDATA[把最实用的经验，分享给有需要的读者。看庭前花开花落，望天上云卷云舒。]]></description><link>https://blog.youkuaiyun.com/dingdinglaila</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dingdinglaila]]></copyright><item><title><![CDATA[Nodejs07--node常用模块之--url]]></title><link>https://blog.youkuaiyun.com/dingdinglaila/article/details/116235622</link><guid>https://blog.youkuaiyun.com/dingdinglaila/article/details/116235622</guid><author>dingdinglaila</author><pubDate>Wed, 28 Apr 2021 15:54:01 +0800</pubDate><description><![CDATA[url 模块：处理带参数的请求

比如这个请求：http://localhost:8990/news?newsid=1&amp;author=zs，带有参数：newsid=1&amp;author=zs

引入模块：require('url');

url.parse();parse函数：接受一个URL字符串，解析它，然后返回一个URL对象

url.format();format函数的作用与parse相反，它的参数是一个JSON对象，返回一个组装好的url地址

【例 1：】url.parse(...]]></description><category></category></item><item><title><![CDATA[Nodejs05--node常用模块之--path、fs]]></title><link>https://blog.youkuaiyun.com/dingdinglaila/article/details/116051246</link><guid>https://blog.youkuaiyun.com/dingdinglaila/article/details/116051246</guid><author>dingdinglaila</author><pubDate>Fri, 23 Apr 2021 16:23:20 +0800</pubDate><description><![CDATA[path 模块 ：提供了一些用于处理文件路径的小工具，对路径进行处理 合并 并 解析路径
path.resolve(from,to);获取从源地址from到to的绝对路径
path.relative(from,to);获取从原地址from到to的相对路径
path.basename('path1');获取文件的基本名
path.extname('path1');获取文件的扩展名
path.join();连接多个路径，使用特定的分隔符把全部给定的path片段链接到一起，并规范生成的路径
]]></description><category></category></item><item><title><![CDATA[Nodejs06--node常用模块之--querystring]]></title><link>https://blog.youkuaiyun.com/dingdinglaila/article/details/116051266</link><guid>https://blog.youkuaiyun.com/dingdinglaila/article/details/116051266</guid><author>dingdinglaila</author><pubDate>Fri, 23 Apr 2021 16:05:44 +0800</pubDate><description><![CDATA[querystring 模块

字面意思就是 查询字符串，一般是对http请求所带的数据进行解析

引入模块：require('querystring'); querystring模块仅有四个方法

querystring.parse(str);parse函数：是将一个字符串反序列化为一个对象。
	querystring.escape(str);escape函数：可使传入的字符串进行编码。
	querystring.stringify(str);stringif函数：将一个对象序列化成一个字符串，...]]></description><category></category></item><item><title><![CDATA[Nodejs04--node常用模块之--http详解]]></title><link>https://blog.youkuaiyun.com/dingdinglaila/article/details/116018387</link><guid>https://blog.youkuaiyun.com/dingdinglaila/article/details/116018387</guid><author>dingdinglaila</author><pubDate>Fri, 23 Apr 2021 16:04:32 +0800</pubDate><description><![CDATA[在node中，模块--简单理解就是每个js文件就是一个模块。模块有三大类：内置模块、第三方模块 、自定义模块。

内置模块：

常用到的模块有：http、path、url、querystring

用法：直接引入require('模块名');

第三方模块

用法：仓库地址：https://www.npmjs.com/在这个网站上进行下载安装

1、安装：npmi第三方模块名

2、文档中引入此模块require('第三方的模块名')

3、按...]]></description><category></category></item><item><title><![CDATA[Nodejs03--node模块基本介绍]]></title><link>https://blog.youkuaiyun.com/dingdinglaila/article/details/116016236</link><guid>https://blog.youkuaiyun.com/dingdinglaila/article/details/116016236</guid><author>dingdinglaila</author><pubDate>Thu, 22 Apr 2021 15:59:33 +0800</pubDate><description><![CDATA[在node中，模块--简单理解就是每个js文件就是一个模块。模块有三大类：内置模块、第三方模块 、自定义模块。]]></description><category></category></item><item><title><![CDATA[Nodejs02--npm介绍]]></title><link>https://blog.youkuaiyun.com/dingdinglaila/article/details/116016921</link><guid>https://blog.youkuaiyun.com/dingdinglaila/article/details/116016921</guid><author>dingdinglaila</author><pubDate>Thu, 22 Apr 2021 15:55:18 +0800</pubDate><description><![CDATA[npm用法

npm的官网地址 https//registry.npmjs.org

初始化项目： npminit-y 。生成一个package.json文件

安装模块

局部安装：npmnstall包名
	全局安装：npmnstall包名-g在命令行工具中大部分是全局安装
当拿到项目后先安装package.json中指定的所有依赖

命令：npminstall 。安装项目中package.json文件中锁定的依赖
	更新：npmupdate 包名
	卸载： npmunins...]]></description><category></category></item><item><title><![CDATA[Nodejs--01--基本介绍]]></title><link>https://blog.youkuaiyun.com/dingdinglaila/article/details/115695647</link><guid>https://blog.youkuaiyun.com/dingdinglaila/article/details/115695647</guid><author>dingdinglaila</author><pubDate>Wed, 14 Apr 2021 15:00:43 +0800</pubDate><description><![CDATA[Node.js 是js语言的运行平台，它不是语言，每个js文件就是一个模块，有自己的作用域，在一个模块内定义的变量、函数、类等都是私有的，对其他文件不可见。]]></description><category></category></item><item><title><![CDATA[JavaScript 进阶 41 -- Promise 手写简单的源码]]></title><link>https://blog.youkuaiyun.com/dingdinglaila/article/details/114703923</link><guid>https://blog.youkuaiyun.com/dingdinglaila/article/details/114703923</guid><author>dingdinglaila</author><pubDate>Wed, 17 Mar 2021 13:33:18 +0800</pubDate><description><![CDATA[前面的一篇说了说Promise的基本用法和常用的方法。知道了Promise的实现原理，我来自己试着谢谢源码

先看看promise是怎么用的

【 例 】


let p = new Promise((resolve,reject)=&gt;{
    //同步代码先执行，异步代码先放着，此时是等待状态
    console.log('先执行同步的')
    setTimeout(() =&gt; {
        resolve('异步执行成功'); 
    }, 1000);
    
})
p]]></description><category></category></item><item><title><![CDATA[JavaScript 进阶 40 -- Promise 白话讲解Promise]]></title><link>https://blog.youkuaiyun.com/dingdinglaila/article/details/114631787</link><guid>https://blog.youkuaiyun.com/dingdinglaila/article/details/114631787</guid><author>dingdinglaila</author><pubDate>Fri, 12 Mar 2021 15:56:53 +0800</pubDate><description><![CDATA[ES6原生提供了 Promise 对象。

当一个异步任务的执行需要依赖另一个异步任务的结果时，我们一般会将两个异步任务嵌套起来，这种情况发生一两次还可以忍，但是发生很多次之后，这就是所谓的回调地狱，代码层层嵌套，环环相扣，逻辑稍微复杂一些，程序就会变得难以维护。

Promise，一定程度上解决了JavaScript的流程操作问题。Promise的用处，实际上是在于多重异步操作相互依赖的情况下，对于逻辑流程的控制。

先直接打印出来看看，console.dir(Promise)



直观的看到 ，Pro]]></description><category></category></item><item><title><![CDATA[JavaScript 进阶 39 -- String模板字符串 和 Object简写]]></title><link>https://blog.youkuaiyun.com/dingdinglaila/article/details/113747229</link><guid>https://blog.youkuaiyun.com/dingdinglaila/article/details/113747229</guid><author>dingdinglaila</author><pubDate>Sun, 07 Feb 2021 21:02:18 +0800</pubDate><description><![CDATA[String模板字符串


let str1= 'hello';
let str2 = 'word';
let str3 = `${str1}${str2}`;//这个不是引号，是数字1键 左边的 键 的符号
console.log(str1+str2);//helloword
console.log(str3);//helloword


let pr = {
    name:'zs',
    age:33,
    sex:'男',
    sayHi(){
        return 'hi'
]]></description><category></category></item><item><title><![CDATA[JavaScript 进阶 38 -- ES6新增Array方法（from、find、findIndex、fill、includes）]]></title><link>https://blog.youkuaiyun.com/dingdinglaila/article/details/113696120</link><guid>https://blog.youkuaiyun.com/dingdinglaila/article/details/113696120</guid><author>dingdinglaila</author><pubDate>Sun, 07 Feb 2021 15:41:31 +0800</pubDate><description><![CDATA[在ES6中有些新增的数组方法还是挺实用。from、find、findIndex、fill、includes。]]></description><category></category></item><item><title><![CDATA[JavaScript 进阶 37 -- JavaScript继承 extends]]></title><link>https://blog.youkuaiyun.com/dingdinglaila/article/details/113647564</link><guid>https://blog.youkuaiyun.com/dingdinglaila/article/details/113647564</guid><author>dingdinglaila</author><pubDate>Thu, 04 Feb 2021 15:18:15 +0800</pubDate><description><![CDATA[上一篇总结一下es5的继承方面的知识。之策来总结一下es6的继承

es6的继承就简单多了，关键字extends直接来看代码吧


class Person{
    constructor(name){
        this.name = name
    }
    //原型的 方法
    eat(){
        console.log('eating');
    }
    //原型的 属性
    get a(){
        return 'a'
    }
    //静态..]]></description><category></category></item><item><title><![CDATA[JavaScript 进阶 36 -- JavaScript 继承]]></title><link>https://blog.youkuaiyun.com/dingdinglaila/article/details/113641937</link><guid>https://blog.youkuaiyun.com/dingdinglaila/article/details/113641937</guid><author>dingdinglaila</author><pubDate>Thu, 04 Feb 2021 15:14:34 +0800</pubDate><description><![CDATA[继承的主要思路就是利用原型链，如果理解了原型链，继承问题就理解了一半。

原理：让一个引用类型继承另一个引用类型的属性和方法。

.原型对象通过constructor属性指向构造函数
	实例通过__proto__指向原型对象
大白话来说就是 儿子继承父亲。实现继承 首先得有一个父类

在es5中继承有两种：1、实例属性的继承，2、公共属性的继承。


function Person(name){
    this.name = name //父类  实例属性 【例1】
}

//父类 原型属性 ...]]></description><category></category></item><item><title><![CDATA[JavaScript 进阶 35 -- 构造函数、原型对象、实例之间的关系详解]]></title><link>https://blog.youkuaiyun.com/dingdinglaila/article/details/113546785</link><guid>https://blog.youkuaiyun.com/dingdinglaila/article/details/113546785</guid><author>dingdinglaila</author><pubDate>Wed, 03 Feb 2021 20:29:29 +0800</pubDate><description><![CDATA[说到继承 ，先要弄明白：构造函数、原型对象、实例之间的关系。直接上图吧，看的更清楚



三者的关系，一看图就很清晰了吧：

1、函数对象 Student 的 prototype 指向原型对象，原型对象的 constructor 指向函数对象 Student。

2、实例对象 new Student() 的 __proto__属性 指向原型对象( Student.prototype )，这个属性的作用是：允许 实例通过该属性 访问 原型对象中的属性和方法。

继承的主要思路就是利用原型链，如果理解了...]]></description><category></category></item><item><title><![CDATA[JavaScript 进阶 34 -- ES6 class类 详解]]></title><link>https://blog.youkuaiyun.com/dingdinglaila/article/details/112611815</link><guid>https://blog.youkuaiyun.com/dingdinglaila/article/details/112611815</guid><author>dingdinglaila</author><pubDate>Thu, 14 Jan 2021 19:48:49 +0800</pubDate><description><![CDATA[什么是类

在JavaScript中，类是函数的一种，类的本质其实就是一个函数。es6新增了一种定义对象实例的方法，使用class关键字定义类。
静态的属性方法。原型的属性方法。实例的属性方法]]></description><category></category></item><item><title><![CDATA[JavaScript 进阶 33 - 用ES5的代码模拟ES6的类的特性]]></title><link>https://blog.youkuaiyun.com/dingdinglaila/article/details/112546725</link><guid>https://blog.youkuaiyun.com/dingdinglaila/article/details/112546725</guid><author>dingdinglaila</author><pubDate>Wed, 13 Jan 2021 11:09:29 +0800</pubDate><description><![CDATA[es6类的特性

1、不能直接调用类，必须通过new来调用，不使用new调用会报错的
2、有些属性是不可枚举的，es5的原型上的方法或属性是可以枚举的
3、使用Object.defineProperty()方法给原型添加自定义的属性或方法（给原型上加属性方法）
构造函数：简单理解就是： 通过 new 的方式调用一个函数，该函数就是构造函数，

]]></description><category></category></item><item><title><![CDATA[JavaScript 进阶 32 - Proxy 代理]]></title><link>https://blog.youkuaiyun.com/dingdinglaila/article/details/111920649</link><guid>https://blog.youkuaiyun.com/dingdinglaila/article/details/111920649</guid><author>dingdinglaila</author><pubDate>Tue, 29 Dec 2020 21:05:55 +0800</pubDate><description><![CDATA[Proxy();可以理解成：创建一个对象的代理。可以对JavaScript中的对象的基本操作 进行自定义。然后用 自定义的操作去 覆盖 其对象的基本操作。换句话说，就是一个对象去执行某个基本操作时, 其执行的过程和结果 都是 自己自定义的。]]></description><category></category></item><item><title><![CDATA[JavaScript 进阶 31 -- 简单来说下vue.js 数据监测observe的实现的原理]]></title><link>https://blog.youkuaiyun.com/dingdinglaila/article/details/111558316</link><guid>https://blog.youkuaiyun.com/dingdinglaila/article/details/111558316</guid><author>dingdinglaila</author><pubDate>Tue, 22 Dec 2020 21:50:16 +0800</pubDate><description><![CDATA[数据监测observer实现响应式的原理，只要要数据发生改变，页面视图就发生变化。

简单来说就是一个方法，里面使用forin循环，分别为对象属性添加 get() 和 set() 方法，来实现对数据监测，这就要用到上一篇文章中提到的 defineProperty 对象自定义属性

直接看段代码：


let obj ={
    name:'tom',
    age:22,
    company:{
        address:'北京'
    }
};
obj.name = 'lily'
...]]></description><category></category></item><item><title><![CDATA[JavaScript 进阶 30 -- defineProperty 对象自定义属性]]></title><link>https://blog.youkuaiyun.com/dingdinglaila/article/details/108750666</link><guid>https://blog.youkuaiyun.com/dingdinglaila/article/details/108750666</guid><author>dingdinglaila</author><pubDate>Thu, 24 Sep 2020 15:23:40 +0800</pubDate><description><![CDATA[在js中我们可以通过下面这几种方法定义属性


let obj = {};
obj.a = '1';

let obj02 = {
    name:'tom',
    age:22
}

let obj03 ={};
Object.defineProperty(obj03,'x',{
    value:'欢迎你'
})




从上面看，使用Object.defineProperty好像很麻烦，为什么还要使用呢，vue.js和avalon.js 都是通过它实现双向绑定的。 Object.defineP]]></description><category></category></item><item><title><![CDATA[前端 —— JavaScript 进阶 29 --js中的typeof、 instanceof、Object.prototype.toString]]></title><link>https://blog.youkuaiyun.com/dingdinglaila/article/details/108515398</link><guid>https://blog.youkuaiyun.com/dingdinglaila/article/details/108515398</guid><author>dingdinglaila</author><pubDate>Thu, 10 Sep 2020 17:23:57 +0800</pubDate><description><![CDATA[JavaScript 中 typeof 和 instanceof 经常用来判断一个变量是什么类型的，或者判断是否为空。它们二者之间还是有区别的：

typeof

typeof是一个一元运算符，放在运算数（表达式）之前，运算数可以是任意数据类型。

它返回值是一个字符串，一个用来表示 运算数（表达式）的 数据类型 的 字符串。该字符串 说明运算数的 类型。

typeof一般只能返回如下几个结果：

"number"、"string"、"boolean"、"objec...]]></description><category></category></item></channel></rss>