<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[tree_stretch的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/tree_stretch</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tree_stretch]]></copyright><item><title><![CDATA[new 操作符的原理与实现]]></title><link>https://blog.youkuaiyun.com/tree_stretch/article/details/137444486</link><guid>https://blog.youkuaiyun.com/tree_stretch/article/details/137444486</guid><author>tree_stretch</author><pubDate>Sun, 07 Apr 2024 02:44:47 +0800</pubDate><description><![CDATA[但是当下的构造函数 Test 并没有显式 return 任何值（默认返回 undefined），如果我们让它返回值会发生什么事情呢？通过这个例子我们可以发现，虽然构造函数内部的 this 还是依旧正常工作的，但是当返回值为对象时，这个返回值就会被正常的返回出去。通过以上几个例子，相信大家也大致了解了 new 操作符的作用了，接下来我们就来根据这些作用手动实现 new 操作符。虽然上述例子中的构造函数中返回了 1，但是这个返回值并没有任何的用处，得到的结果还是和之前的例子完全一样。]]></description><category></category></item><item><title><![CDATA[简单聊聊迭代器与生成器]]></title><link>https://blog.youkuaiyun.com/tree_stretch/article/details/137443716</link><guid>https://blog.youkuaiyun.com/tree_stretch/article/details/137443716</guid><author>tree_stretch</author><pubDate>Sun, 07 Apr 2024 01:52:25 +0800</pubDate><description><![CDATA[通过上面这段程序，你应该看出来了，结果跟我们之前用es5实现的迭代器是差不多的。但是你在这个生成器函数中压根就没有看见next方法，done和value属性。因为生成器函数内部实现了迭代器。，通过function关键字后的星号( * )来表示，函数中会用到新的关键字yield.。星号( * )可以紧跟function后面，也可以在function后面加个空格。迭代器是一种特殊对象，这类特殊对象需要符合。上Demo：手动实现一个迭代器。关键字，它有什么特点呢？]]></description><category></category></item><item><title><![CDATA[JS中的对象迭代]]></title><link>https://blog.youkuaiyun.com/tree_stretch/article/details/137415643</link><guid>https://blog.youkuaiyun.com/tree_stretch/article/details/137415643</guid><author>tree_stretch</author><pubDate>Sat, 06 Apr 2024 03:47:33 +0800</pubDate><description><![CDATA[一、通用对象迭代方法

for…in：返回迭代对象的可枚举字符串属性，包括原型上的属性；
for…of：返回可迭代对象定义的要进行迭代的值。根据对象上实现的 @@iterator 方法决定枚举行为的返回值；
Object.keys()：返回对象自身的可枚举的字符串属性名组成的数组，不包括使用 symbol 值作为名称的属性，不包括原型上的属性；
Object.getOwnPropertyNames()：返回给定对象中所有自有属性的数组。（包括不可枚举属性，但不包括使用 symbol 值作为名称的属性，不包括]]></description><category></category></item><item><title><![CDATA[JavaScript中for...in 和 for...of 的区别]]></title><link>https://blog.youkuaiyun.com/tree_stretch/article/details/137414432</link><guid>https://blog.youkuaiyun.com/tree_stretch/article/details/137414432</guid><author>tree_stretch</author><pubDate>Sat, 06 Apr 2024 03:20:51 +0800</pubDate><description><![CDATA[先贴一个mdn上对于 for…in 和 for…of 的解释：
for…in 比较容易理解，用于迭代对象的可枚举字符串属性（包括原型链上的可枚举字符串属性），直接上 Demo：
打印结果只有 ‘1’ 和 ‘property2’ 这两个属性，逐个分析：接下来我们来看下 for…of 的解释：for…of 语句用于迭代可迭代对象定义的要进行迭代的值。
老规矩，我们先上个小 Demo：
好家伙：直接报错了，报错信息告诉我们 object1 是不可迭代的，即 object1 并不是 可迭代对象。让我们再仔细回看下 ]]></description><category></category></item><item><title><![CDATA[window.performance.timing属性详解]]></title><link>https://blog.youkuaiyun.com/tree_stretch/article/details/137057877</link><guid>https://blog.youkuaiyun.com/tree_stretch/article/details/137057877</guid><author>tree_stretch</author><pubDate>Tue, 26 Mar 2024 21:30:31 +0800</pubDate><description><![CDATA[指文档解析完成的时刻，包括在“传统模式”下被阻塞的通过script标签加载的内容（除了使用defer或者async属性异步加载的情况）。如果已经没有任何延迟加载的事件（所有图片的加载）阻止load事件发生，浏览器窗口上表示页面还在加载的图标停止旋转，那么该时刻将会将document.readyState属性设置为"complete"，此时刻就是domComplete。如果被请求的文档来自于前一个同源（同源策略）的文档，那么该属性存储的是浏览器开始卸载前一个文档的时刻。表示同源的前一个文档卸载完成的时刻。]]></description><category></category></item><item><title><![CDATA[CommonJS 和 ES Modules 对于模块引入的区别]]></title><link>https://blog.youkuaiyun.com/tree_stretch/article/details/132941475</link><guid>https://blog.youkuaiyun.com/tree_stretch/article/details/132941475</guid><author>tree_stretch</author><pubDate>Sun, 17 Sep 2023 13:04:24 +0800</pubDate><description><![CDATA[问： CommonJS 和 ES Modules 中模块引入的区别？CommonJS 输出的是一个值的拷贝；ES Modules 生成一个引用，等到真的需要用到时，再到模块里面去取值，模块里面的变量，绑定其所在的模块。我相信很多人已经把这个答案背得滚瓜烂熟，好，那继续提问。问：CommonJS 输出的值是浅拷贝还是深拷贝？问：你能模拟实现 ES Modules 的引用生成吗？]]></description><category></category></item><item><title><![CDATA[TS模块化规范与命名空间]]></title><link>https://blog.youkuaiyun.com/tree_stretch/article/details/132819976</link><guid>https://blog.youkuaiyun.com/tree_stretch/article/details/132819976</guid><author>tree_stretch</author><pubDate>Tue, 12 Sep 2023 00:23:41 +0800</pubDate><description><![CDATA[TS模块化规范与命名空间]]></description><category></category></item><item><title><![CDATA[前端面试之彻底搞懂this指向]]></title><link>https://blog.youkuaiyun.com/tree_stretch/article/details/119582209</link><guid>https://blog.youkuaiyun.com/tree_stretch/article/details/119582209</guid><author>tree_stretch</author><pubDate>Wed, 11 Aug 2021 00:33:11 +0800</pubDate><description><![CDATA[this指针不取决于书写的位置，而只取决于调用的位置！this是在运行时被绑定的！]]></description><category></category></item><item><title><![CDATA[浅谈Cookie、Session、Token]]></title><link>https://blog.youkuaiyun.com/tree_stretch/article/details/118004868</link><guid>https://blog.youkuaiyun.com/tree_stretch/article/details/118004868</guid><author>tree_stretch</author><pubDate>Tue, 22 Jun 2021 11:56:34 +0800</pubDate><description><![CDATA[深度剖析Cookie机制、Session机制、Token机制。文章比较详细，坚持看完一定会有收获，从此再也不惧怕这三大机制。]]></description><category></category></item><item><title><![CDATA[Web基础——Web的结构组件]]></title><link>https://blog.youkuaiyun.com/tree_stretch/article/details/117968434</link><guid>https://blog.youkuaiyun.com/tree_stretch/article/details/117968434</guid><author>tree_stretch</author><pubDate>Wed, 16 Jun 2021 22:54:44 +0800</pubDate><description><![CDATA[在因特网上，除了两大Web应用程序（Web浏览器和Web服务器）之外，还有许多其他重要的Web应用程序。]]></description><category></category></item><item><title><![CDATA[服务端渲染与客户端渲染]]></title><link>https://blog.youkuaiyun.com/tree_stretch/article/details/117934727</link><guid>https://blog.youkuaiyun.com/tree_stretch/article/details/117934727</guid><author>tree_stretch</author><pubDate>Tue, 15 Jun 2021 23:55:24 +0800</pubDate><description><![CDATA[服务端渲染、客户端渲染、以及服务端与客户端渲染相结合]]></description><category></category></item></channel></rss>