mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-12-16 07:51:52 +08:00
语法高亮,滚动条美化,设置页面调整
This commit is contained in:
@@ -4,9 +4,9 @@
|
||||
<div><iframe class="interactive interactive-js" frameborder="0" height="250" src="https://interactive-examples.mdn.mozilla.net/pages/js/functions-getter.html" width="100%"></iframe></div>
|
||||
<p class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a class="external" href="https://github.com/mdn/interactive-examples" rel="noopener">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p>
|
||||
<h2 id="语法">语法</h2>
|
||||
<pre class="syntaxbox">{get <em>prop</em>() { ... } }
|
||||
<pre><code class="language-javascript">{get <em>prop</em>() { ... } }
|
||||
|
||||
{get <em>[expression]</em>() { ... } }</pre>
|
||||
{get <em>[expression]</em>() { ... } }</code></pre>
|
||||
<h3 id="参数">参数</h3>
|
||||
<dl>
|
||||
<dt><code>prop</code></dt>
|
||||
@@ -28,34 +28,34 @@
|
||||
<h2 id="示例">示例</h2>
|
||||
<h3 id="Example:_Defining_a_getter_with_the_get_operator" name="Example:_Defining_a_getter_with_the_get_operator">在新对象初始化时定义一个getter</h3>
|
||||
<p>这会为<code>obj</code>创建一个伪属性<code>latest</code>,它会返回<code>log</code>数组的最后一个元素。</p>
|
||||
<pre class="brush: js">var obj = {
|
||||
<pre><code class="language-javascript">var obj = {
|
||||
log: ['example','test'],
|
||||
get latest() {
|
||||
if (this.log.length == 0) return undefined;
|
||||
return this.log[this.log.length - 1];
|
||||
}
|
||||
}
|
||||
console.log(obj.latest); // "test".</pre>
|
||||
console.log(obj.latest); // "test".</code></pre>
|
||||
<p>注意,尝试为<code>latest</code>分配一个值不会改变它。</p>
|
||||
<h3 id="Example:_Deleting_a_getter_using_the_delete_operator" name="Example:_Deleting_a_getter_using_the_delete_operator">使用<code>delete</code>操作符删除 getter</h3>
|
||||
<p>只需使用 <code><a href="Reference/Operators/delete">delete</a></code>,就可删除 getter:</p>
|
||||
<pre class="brush: js">delete obj.latest;
|
||||
</pre>
|
||||
<pre><code class="language-javascript">delete obj.latest;
|
||||
</code></pre>
|
||||
<h3 id="使用defineProperty在现有对象上定义_getter">使用<code>defineProperty</code>在现有对象上定义 getter</h3>
|
||||
<p>要随时将 getter 添加到现有对象,使用 <a href="Reference/Global_Objects/Object/defineProperty" title="Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。"><code>Object.defineProperty()</code></a>.</p>
|
||||
<pre class="brush: js">var o = { a:0 }
|
||||
<pre><code class="language-javascript">var o = { a:0 }
|
||||
|
||||
Object.defineProperty(o, "b", { get: function () { return this.a + 1; } });
|
||||
|
||||
console.log(o.b) // Runs the getter, which yields a + 1 (which is 1)</pre>
|
||||
console.log(o.b) // Runs the getter, which yields a + 1 (which is 1)</code></pre>
|
||||
<h3 id="使用计算属性名">使用计算属性名</h3>
|
||||
<pre class="brush: js">var expr = 'foo';
|
||||
<pre><code class="language-javascript">var expr = 'foo';
|
||||
|
||||
var obj = {
|
||||
get [expr]() { return 'bar'; }
|
||||
};
|
||||
|
||||
console.log(obj.foo); // "bar"</pre>
|
||||
console.log(obj.foo); // "bar"</code></pre>
|
||||
<h3 id="Smart_self-overwriting_lazy_getters">Smart / self-overwriting / lazy getters</h3>
|
||||
<p>Getters 给你一种方法来定义一个对象的属性,但是在访问它们之前不会计算属性的值。 getter 延续计算值的成本,直到需要值,如果不需要,您就不用支付成本。</p>
|
||||
<p>一种额外的优化技术是用<strong>智能或<a class="external" href="https://en.wikipedia.org/wiki/Memoization" rel="noopener">记忆化</a> getters </strong>延迟属性值的计算并将其缓存以备以后访问。该值是在第一次调用getter 时计算的,然后被缓存,因此后续访问返回缓存值而不重新计算它。这在以下情况下很有用:</p>
|
||||
@@ -66,11 +66,11 @@ console.log(obj.foo); // "bar"</pre>
|
||||
</ul>
|
||||
<p>这意味着你不应该为你希望更改其值的属性使用懒 getter,因为 getter 不会重新计算该值。</p>
|
||||
<p>在以下示例中,对象具有一个 getter 属性。在获取属性时,该属性将从对象中删除并重新添加,但此时将隐式显示为数据属性。最后返回得到值。</p>
|
||||
<pre class="brush: js">get notifier() {
|
||||
<pre><code class="language-javascript">get notifier() {
|
||||
delete this.notifier;
|
||||
return this.notifier = document.getElementById('bookmarked-notification-anchor');
|
||||
},
|
||||
</pre>
|
||||
</code></pre>
|
||||
<p>对于Firefox代码,另请参阅定义<code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/XPCOMUtils.jsm#defineLazyGetter()">defineLazyGetter()</a></code>函数的XPCOMUtils.jsm代码模块。</p>
|
||||
<h2 id="规范">规范</h2>
|
||||
<table class="standard-table">
|
||||
|
||||
Reference in New Issue
Block a user