语法高亮,滚动条美化,设置页面调整

This commit is contained in:
fofolee
2019-04-19 02:41:09 +08:00
parent 1e8f76c000
commit 359d29ee0b
1590 changed files with 12328 additions and 11441 deletions

View File

@@ -7,7 +7,7 @@
<h3 id="Map对象"><code>Map</code>对象</h3>
<p>ECMAScript 2015 引入了一个新的数据结构来将一个值映射到另一个值。一个<a href="Reference/Map" title="此页面仍未被本地化, 期待您的翻译!"><code>Map</code></a>对象就是一个简单的键值对映射集合,可以按照数据插入时的顺序遍历所有的元素。</p>
<p>下面的代码演示了使用<code>Map</code>进行的一些基本操作。请参考<a href="Reference/Map" title="此页面仍未被本地化, 期待您的翻译!"><code>Map</code></a>以获取更多的样例和完整的 API。你可以使用<a href="Reference/Statements/for...of" title="for...of语句在可迭代对象包括 ArrayMapSetStringTypedArrayarguments 对象等等上创建一个迭代循环调用自定义迭代钩子并为每个不同属性的值执行语句"><code>for...of</code></a>循环来得到所有的<code>[key, value]</code></p>
<pre class="brush: js">var sayings = new Map();
<pre><code class="language-javascript">var sayings = new Map();
sayings.set('dog', 'woof');
sayings.set('cat', 'meow');
sayings.set('elephant', 'toot');
@@ -24,7 +24,7 @@ for (var [key, value] of sayings) {
// "elephant goes toot"
sayings.clear();
sayings.size; // 0</pre>
sayings.size; // 0</code></pre>
<h3 id="Object和Map的比较"><code><font face="Consolas, Liberation Mono, Courier, monospace">Object</font></code><code>Map</code>的比较</h3>
<p>一般地,<a href="Reference/Global_Objects/Object" title="Object 构造函数创建一个对象包装器。">objects</a>会被用于将字符串类型映射到数值。<code>Object</code>允许设置键值对、根据键获取值、删除键、检测某个键是否存在。而<code>Map</code>具有更多的优势。</p>
<ul>
@@ -44,7 +44,7 @@ sayings.size; // 0</pre>
<p><code>Map</code>对象不同的是,<code>WeakMap</code>的键是不可枚举的。不提供列出其键的方法。列表是否存在取决于垃圾回收器的状态,是不可预知的。</p>
<p>可以在"Why <em>Weak</em>Map?"<a href="Reference/WeakMap" title="此页面仍未被本地化, 期待您的翻译!"><code>WeakMap</code></a>查看更多信息和示例。</p>
<p><code>WeakMap</code>对象的一个用例是存储一个对象的私有数据或隐藏实施细节。Nick Fitzgerald 的博文<a class="external" href="http://fitzgeraldnick.com/weblog/53/" rel="noopener">"Hiding Implementation Details with ECMAScript 6 WeakMaps"</a>提供了一个例子。对象内部的私有数据和方法被存储在<code>WeakMap</code>类型的<code>privates</code>变量中。所有暴露出的原型和情况都是公开的,而其他内容都是外界不可访问的,因为模块并未导出<code>privates</code>对象。</p>
<pre class="brush: js">const privates = new WeakMap();
<pre><code class="language-javascript">const privates = new WeakMap();
function Public() {
const me = {
@@ -59,12 +59,12 @@ Public.prototype.method = function () {
};
module.exports = Public;
</pre>
</code></pre>
<h2 id="集合">集合</h2>
<h3 id="Set对象"><code>Set</code>对象</h3>
<p><a href="Reference/Global_Objects/Set" title="Set 对象允许你存储任何类型的唯一值无论是原始值或者是对象引用。"><code>Set</code></a>对象是一组值的集合,这些值是不重复的,可以按照添加顺序来遍历。</p>
<p>这里演示了<code>Set</code>的基本操作更多示例和完整API可以参考<a href="Reference/Global_Objects/Set" title="Set 对象允许你存储任何类型的唯一值无论是原始值或者是对象引用。"><code>Set</code></a></p>
<pre class="brush: js">var mySet = new Set();
<pre><code class="language-javascript">var mySet = new Set();
mySet.add(1);
mySet.add("some text");
mySet.add("foo");
@@ -76,14 +76,14 @@ mySet.size; // 2
for (let item of mySet) console.log(item);
// 1
// "some text"
</pre>
</code></pre>
<h3 id="数组和集合的转换">数组和集合的转换</h3>
<p>可以使用<a href="Reference/Global_Objects/Array/from" title="Array.from() 方法从一个类似数组或可迭代对象中创建一个新的数组实例。"><code>Array.from</code></a><a href="Reference/Operators/Spread_operator">展开操作符</a>来完成集合到数组的转换。同样,<code>Set</code>的构造器接受数组作为参数,可以完成从<code>Array</code><code>Set</code>的转换。需要重申的是,<code>Set</code>对象中的值不重复,所以数组转换为集合时,所有重复值将会被删除。</p>
<pre class="brush: js">Array.from(mySet);
<pre><code class="language-javascript">Array.from(mySet);
[...mySet2];
mySet2 = new Set([1,2,3,4]);
</pre>
</code></pre>
<h3 id="Array和Set的对比"><code>Array</code><code>Set</code>的对比</h3>
<p>一般情况下在JavaScript中使用数组来存储一组元素而新的集合对象有这些优势</p>
<ul>