<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JavaScript &#8211; 张三太爷</title>
	<atom:link href="https://www.somedoc.net/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.somedoc.net</link>
	<description>看前面，黑洞洞</description>
	<lastBuildDate>Tue, 09 Jun 2020 07:44:28 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>

<image>
	<url>https://www.somedoc.net/wp-content/uploads/2016/12/cropped-dandycheung-1-32x32.jpg</url>
	<title>JavaScript &#8211; 张三太爷</title>
	<link>https://www.somedoc.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>JavaScript 的 source map</title>
		<link>https://www.somedoc.net/2020/06/09/javascript-%e7%9a%84-source-map/</link>
					<comments>https://www.somedoc.net/2020/06/09/javascript-%e7%9a%84-source-map/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Tue, 09 Jun 2020 07:44:28 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[备忘录]]></category>
		<category><![CDATA[JavaScript]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=4515</guid>

					<description><![CDATA[网上看到个网站，JavaScript 动效应用得挺不错，就想 <a href="https://www.somedoc.net/2020/06/09/javascript-%e7%9a%84-source-map/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[<p>网上看到个网站，JavaScript 动效应用得挺不错，就想学习一下，把相关资源下载到本地尝试。从 Chrome/Firefox 浏览器里看到的引用到的相关资源文件也都放到了本地的对应目录下，在调试的时候惊讶地发现，对 js 文件的修改竟然不管用。</p>
<p>看来看去，才注意到一个名为 release_build.js 的文件，以及其伴生的一个 .map 文件。好奇之下搜索了资料，明白了前者是部署时使用了打包工具生成的多合一文件，而且不止简单地文件合并，还有代码混淆。而后者则是可以使前述过程得以逆转的“元信息库”。这一技术叫 Source Map，对这一技术有所讲述的中文资料是<a href="http://www.ruanyifeng.com/blog/2013/01/javascript_source_map.html">阮一峰的文章</a>。该文已经是七年的老文，其中提到的 sourceRoot 键没有看到，但却多了 sourcesContent 键，看上去是未混淆时的源代码。</p>
<p>是否可以使用.map 文件还原原本的文件组织结构呢？一开始找到一个叫 restore-source-tree 的工具，用 npm 安装后测试，完全无法工作。后来找到了名为 <a href="https://www.npmjs.com/package/reverse-sourcemap">reverse-sourcemap</a> 的工具，同样使用 npm 安装，一试就灵，开心。</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2020/06/09/javascript-%e7%9a%84-source-map/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>JavaScript 检测对象中的属性</title>
		<link>https://www.somedoc.net/2019/12/30/javascript-%e6%a3%80%e6%b5%8b%e5%af%b9%e8%b1%a1%e4%b8%ad%e7%9a%84%e5%b1%9e%e6%80%a7/</link>
					<comments>https://www.somedoc.net/2019/12/30/javascript-%e6%a3%80%e6%b5%8b%e5%af%b9%e8%b1%a1%e4%b8%ad%e7%9a%84%e5%b1%9e%e6%80%a7/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Mon, 30 Dec 2019 07:18:26 +0000</pubDate>
				<category><![CDATA[备忘录]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[JavaScript]]></category>
		<guid isPermaLink="false">http://www.somedoc.net/?p=4237</guid>

					<description><![CDATA[1. 使用 in 关键字。可以判断对象的自有属性和继承属性。 <a href="https://www.somedoc.net/2019/12/30/javascript-%e6%a3%80%e6%b5%8b%e5%af%b9%e8%b1%a1%e4%b8%ad%e7%9a%84%e5%b1%9e%e6%80%a7/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[<p>1. 使用 <code>in</code> 关键字。可以判断对象的自有属性和继承属性。</p><pre class="crayon-plain-tag">var o = { x: 1 };
"x" in o;        // true，自有属性
"y" in o;        // false
"toString" in o; // true，继承属性</pre><p>2. 使用对象的 <pre class="crayon-plain-tag">hasOwnProperty()</pre> 方法。只能判断自有属性是否存在，对于继承属性会返回 <code>false</code>。</p><pre class="crayon-plain-tag">var o = { x: 1 };
o.hasOwnProperty("x"); 　　    // true，自有属性中有 x
o.hasOwnProperty("y"); 　　    // false，自有属性中不存在 y
o.hasOwnProperty("toString"); // false，这是一个继承属性，但不是自有属性</pre><p>3. 使用 <code>undefined</code> 判断。自有属性和继承属性均可判断。</p><pre class="crayon-plain-tag">var o = { x: 1 };
o.x !== undefined;        // true
o.y !== undefined;        // false
o.toString !== undefined; // true</pre><p>该方法存在一个问题，如果属性的值就是 <code>undefined</code> 的话，该方法不能返回想要的结果，如下。</p><pre class="crayon-plain-tag">var o = { x: undefined };
o.x !== undefined;        // false，属性存在，但值就是 undefined
o.y !== undefined;        // false
o.toString !== undefined; // true</pre><p>4. 在条件语句中判断</p><pre class="crayon-plain-tag">var o = {};
if(o.x)
  o.x++; // 如果 x 是 undefine, null, false, " ", 0 或 NaN，它将保持不变</pre><p>之所以要汇总以上信息，是因为前两天在和 CSDN 的垃圾页面作斗争，写了以下油猴插件，试图干掉它的那个阅读全文的按钮。在 Windows 下的 Firefox 里一直有问题，但让朋友测试，反馈说可以正常工作。简直要怀疑人生。</p><pre class="crayon-plain-tag">// ==UserScript==
// @name         CSDN
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  CSDN 博客解除阅读更多限制
// @author       You
// @match        https://blog.csdn.net/*
// @grant        none
// ==/UserScript==

(function () {
  var count = 120;

  function expand(){
    var ok = false;
 
    if (window.csdn) {
      console.log("window.csdn found.");

      if (window.csdn.clearReadMoreBtn) {
        window.csdn.clearReadMoreBtn();
        console.log("window.csdn.clearReadMoreBtn called.");
        ok = true;
      } else {
        console.log("window.csdn.clearReadMoreBtn NOT found.");
      }
    } else {
      console.log("window.csdn NOT found.");
    }

    console.log("expand", ok, count);
		
    if(!ok &amp;&amp; --count){
      setTimeout(expand, 1000);
    }
  }

  expand();
})();</pre><p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2019/12/30/javascript-%e6%a3%80%e6%b5%8b%e5%af%b9%e8%b1%a1%e4%b8%ad%e7%9a%84%e5%b1%9e%e6%80%a7/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
