mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-12-16 07:51:52 +08:00
语法高亮,滚动条美化,设置页面调整
This commit is contained in:
@@ -2,8 +2,8 @@
|
||||
<div></div>
|
||||
<p>静态方法 <code><strong>Reflect</strong></code><strong><code>.apply()</code></strong> 通过指定的参数列表发起对目标(target)函数的调用。</p>
|
||||
<h2 id="句法">句法</h2>
|
||||
<pre class="syntaxbox">Reflect.apply(target, thisArgument, argumentsList)
|
||||
</pre>
|
||||
<pre><code class="language-javascript">Reflect.apply(target, thisArgument, argumentsList)
|
||||
</code></pre>
|
||||
<h3 id="参数">参数</h3>
|
||||
<dl>
|
||||
<dt>target</dt>
|
||||
@@ -17,11 +17,11 @@
|
||||
<p>如果target对象不可调用,抛出<a href="Reference/Global_Objects/TypeError" title="TypeError(类型错误) 对象用来表示值的类型非预期类型时发生的错误。"><code>TypeError</code></a>。</p>
|
||||
<h2 id="描述">描述</h2>
|
||||
<p>该方法与ES5中<a href="Reference/Global_Objects/Function/apply" title="apply() 方法调用一个具有给定this值的函数,以及作为一个数组(或类似数组对象)提供的参数。"><code>Function.prototype.apply()</code></a>方法类似:调用一个方法并且显式地指定this变量和参数列表(arguments) ,参数列表可以是数组,或类似数组的对象。</p>
|
||||
<pre class="brush: js">Function.prototype.apply.call(Math.floor, undefined, [1.75]);</pre>
|
||||
<pre><code class="language-javascript">Function.prototype.apply.call(Math.floor, undefined, [1.75]);</code></pre>
|
||||
<p>使用 <code>Reflect.apply</code> 方法会使代码更加简洁易懂。</p>
|
||||
<h2 id="使用示例">使用示例</h2>
|
||||
<h3 id="Reflect.apply()"><code>Reflect.apply()</code></h3>
|
||||
<pre class="brush: js">Reflect.apply(Math.floor, undefined, [1.75]);
|
||||
<pre><code class="language-javascript">Reflect.apply(Math.floor, undefined, [1.75]);
|
||||
// 1;
|
||||
|
||||
Reflect.apply(String.fromCharCode, undefined, [104, 101, 108, 108, 111]);
|
||||
@@ -32,7 +32,7 @@ Reflect.apply(RegExp.prototype.exec, /ab/, ["confabulation"]).index;
|
||||
|
||||
Reflect.apply("".charAt, "ponies", [3]);
|
||||
// "i"
|
||||
</pre>
|
||||
</code></pre>
|
||||
<h2 id="规范">规范</h2>
|
||||
<table class="standard-table">
|
||||
<tbody>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<div></div>
|
||||
<p><code><strong>Reflect</strong></code><strong><code>.construct()</code></strong> 方法的行为有点像 <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new"><code>new</code> 操作符</a> 构造函数 , 相当于运行 <code>new target(...args)</code>.</p>
|
||||
<h2 id="语法">语法</h2>
|
||||
<pre class="syntaxbox">Reflect.construct(target, argumentsList[, newTarget])
|
||||
</pre>
|
||||
<pre><code class="language-javascript">Reflect.construct(target, argumentsList[, newTarget])
|
||||
</code></pre>
|
||||
<h3 id="参数">参数</h3>
|
||||
<dl>
|
||||
<dt><code>target</code></dt>
|
||||
@@ -17,22 +17,22 @@
|
||||
<p>抛出<a href="Reference/Global_Objects/TypeError" title="TypeError(类型错误) 对象用来表示值的类型非预期类型时发生的错误。"><code>TypeError</code></a>,异常, 如果target或者newTarget不是构造函数</p>
|
||||
<h2 id="描述">描述</h2>
|
||||
<p><code>Reflect.construct允许你使用可变的参数来调用构造函数</code> </p>
|
||||
<pre class="brush: js">var obj = new Foo(...args);
|
||||
var obj = Reflect.construct(Foo, args); </pre>
|
||||
<pre><code class="language-javascript">var obj = new Foo(...args);
|
||||
var obj = Reflect.construct(Foo, args); </code></pre>
|
||||
<h2 id="实例">实例</h2>
|
||||
<h3 id="使用_Reflect.construct()">使用 <code>Reflect.construct()</code></h3>
|
||||
<pre class="brush: js">var d = Reflect.construct(Date, [1776, 6, 4]);
|
||||
<pre><code class="language-javascript">var d = Reflect.construct(Date, [1776, 6, 4]);
|
||||
d instanceof Date; // true
|
||||
d.getFullYear(); // 1776
|
||||
</pre>
|
||||
</code></pre>
|
||||
<h3 id="使用_newTarget_参数">使用 <code>newTarget</code> 参数</h3>
|
||||
<p>参考 <a href="/en-US/docs/Web/JavaScript/Reference/Classes">classes</a> 获取更多有关子类的信息, 和<code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/new.target">new.target</a></code> 操作符的信息</p>
|
||||
<pre class="brush: js">function someConstructor() {}
|
||||
<pre><code class="language-javascript">function someConstructor() {}
|
||||
var result = Reflect.construct(Array, [], someConstructor);
|
||||
|
||||
Reflect.getPrototypeOf(result); // 输出:someConstructor.prototype
|
||||
Array.isArray(result); // true
|
||||
</pre>
|
||||
</code></pre>
|
||||
<h2 id="规范">规范</h2>
|
||||
<table class="standard-table">
|
||||
<tbody>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<div></div>
|
||||
<p>静态方法 <code><strong>Reflect</strong></code><strong><code>.defineProperty()</code></strong> 基本等同于 <a href="Reference/Global_Objects/Object/defineProperty" title="Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。"><code>Object.defineProperty()</code></a> 方法,唯一不同是返回 <a href="Reference/Boolean" title="此页面仍未被本地化, 期待您的翻译!"><code>Boolean</code></a> 值。</p>
|
||||
<h2 id="语法">语法</h2>
|
||||
<pre class="syntaxbox">Reflect.defineProperty(target, propertyKey, attributes)
|
||||
</pre>
|
||||
<pre><code class="language-javascript">Reflect.defineProperty(target, propertyKey, attributes)
|
||||
</code></pre>
|
||||
<h3 id="参数">参数</h3>
|
||||
<dl>
|
||||
<dt><code>target</code></dt>
|
||||
@@ -21,17 +21,17 @@
|
||||
<p><code>Reflect.defineProperty</code> 方法允许精确添加或修改对象上的属性。更多的细节请参阅 <a href="Reference/Global_Objects/Object/defineProperty" title="Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。"><code>Object.defineProperty</code></a> 。<code>Object.defineProperty </code>返回一个对象,或者如果属性没有被成功定义,抛出一个 <a href="Reference/Global_Objects/TypeError" title="TypeError(类型错误) 对象用来表示值的类型非预期类型时发生的错误。"><code>TypeError</code></a> 。 相比之下<code>Reflect.defineProperty方法,</code>只是简单地返回一个 <a href="Reference/Boolean" title="此页面仍未被本地化, 期待您的翻译!"><code>Boolean</code></a> 说明该属性是否被成功定义。</p>
|
||||
<h2 id="示例">示例</h2>
|
||||
<h3 id="使用_Reflect.defineProperty()">使用 <code>Reflect.defineProperty()</code></h3>
|
||||
<pre class="brush: js">const student = {};
|
||||
<pre><code class="language-javascript">const student = {};
|
||||
Reflect.defineProperty(student, "name", {value: "Mike"}); // true
|
||||
student.name; // "Mike"
|
||||
</pre>
|
||||
</code></pre>
|
||||
<h3 id="检查属性是否被成功定义">检查属性是否被成功定义</h3>
|
||||
<p><a href="Reference/Global_Objects/Object/defineProperty" title="Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。"><code>Object.defineProperty</code></a> 方法,如果成功则返回一个对象,否则抛出一个 <a href="Reference/Global_Objects/TypeError" title="TypeError(类型错误) 对象用来表示值的类型非预期类型时发生的错误。"><code>TypeError</code></a> 。另外,当定义一个属性时,你也可以使用 <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/try...catch">try...catch</a></code> 块去捕获其中任何的错误。而因为 <code>Reflect.defineProperty</code> 返回 Boolean 值作为成功的状态,所以你也可以只使用 <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/if...else">if...else</a></code> 块:</p>
|
||||
<pre class="brush: js">if (Reflect.defineProperty(target, property, attributes)) {
|
||||
<pre><code class="language-javascript">if (Reflect.defineProperty(target, property, attributes)) {
|
||||
// 成功
|
||||
} else {
|
||||
// 失败
|
||||
}</pre>
|
||||
}</code></pre>
|
||||
<h2 id="规范">规范</h2>
|
||||
<table class="standard-table">
|
||||
<tbody>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<div></div>
|
||||
<p>静态方法 <code><strong>Reflect</strong></code><strong><code>.deleteProperty()</code></strong> 允许用于删除属性。它很像 <a href="/en-US/docs/Web/JavaScript/Reference/Operators/delete"><code>delete</code> operator</a> ,但它是一个函数。</p>
|
||||
<h2 id="语法">语法</h2>
|
||||
<pre class="syntaxbox">Reflect.deleteProperty(target, propertyKey)
|
||||
</pre>
|
||||
<pre><code class="language-javascript">Reflect.deleteProperty(target, propertyKey)
|
||||
</code></pre>
|
||||
<h3 id="参数">参数</h3>
|
||||
<dl>
|
||||
<dt><code>target</code></dt>
|
||||
@@ -19,7 +19,7 @@
|
||||
<p><code>Reflect.deleteProperty</code> 允许你删除一个对象上的属性。返回一个 <a href="Reference/Boolean" title="此页面仍未被本地化, 期待您的翻译!"><code>Boolean</code></a> 值表示该属性是否被成功删除。它几乎与非严格的 <a href="/en-US/docs/Web/JavaScript/Reference/Operators/delete"><code>delete</code> operator</a> 相同。</p>
|
||||
<h2 id="示例">示例</h2>
|
||||
<h3 id="使用_Reflect.deleteProperty()">使用 <code>Reflect.deleteProperty()</code></h3>
|
||||
<pre class="brush: js">var obj = { x: 1, y: 2 };
|
||||
<pre><code class="language-javascript">var obj = { x: 1, y: 2 };
|
||||
Reflect.deleteProperty(obj, "x"); // true
|
||||
obj; // { y: 2 }
|
||||
|
||||
@@ -32,7 +32,7 @@ Reflect.deleteProperty({}, "foo"); // true
|
||||
|
||||
// 如果属性不可配置,返回 false
|
||||
Reflect.deleteProperty(Object.freeze({foo: 1}), "foo"); // false
|
||||
</pre>
|
||||
</code></pre>
|
||||
<h2 id="规范">规范</h2>
|
||||
<table class="standard-table">
|
||||
<tbody>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<div> <div class="blockIndicator obsolete obsoleteHeader"><p><strong><span class="icon-only-inline" title="This is an obsolete API and is no longer guaranteed to work."><i class="icon-trash"> </i></span> 已废弃</strong><br/>This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.</p></div></div>
|
||||
<div><strong><code>Reflect.enumerate()</code></strong>静态方法通常返回目标对象自身和继承的可迭代属性的一个迭代器,在ECMAScript 2016中已被移除,在各浏览器中已被废弃。</div>
|
||||
<h2 id="语法">语法</h2>
|
||||
<pre class="syntaxbox">Reflect.enumerate(target)
|
||||
</pre>
|
||||
<pre><code class="language-javascript">Reflect.enumerate(target)
|
||||
</code></pre>
|
||||
<h3 id="参数">参数</h3>
|
||||
<dl>
|
||||
<dt><code>target</code></dt>
|
||||
@@ -17,13 +17,13 @@
|
||||
<p><code>Reflect.enumerate()</code>方法返回目标对象自身和继承的可迭代属性的一个迭代器。</p>
|
||||
<h2 id="案例">案例</h2>
|
||||
<h3 id="使用_Reflect.enumerate()">使用 <code>Reflect.enumerate()</code></h3>
|
||||
<pre class="brush: js">var obj = { x: 1, y: 2 };
|
||||
<pre><code class="language-javascript">var obj = { x: 1, y: 2 };
|
||||
|
||||
for (var name of Reflect.enumerate(obj)) {
|
||||
console.log(name);
|
||||
}
|
||||
// logs "x" and "y"
|
||||
</pre>
|
||||
</code></pre>
|
||||
<h2 id="规范">规范</h2>
|
||||
<table class="standard-table">
|
||||
<tbody>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<div></div>
|
||||
<p><code><strong>Reflect</strong></code><strong><code>.get() </code></strong>方法的工作方式,就像从 object (<code>target[propertyKey]</code>) 中获取属性,但它是作为一个函数执行的。</p>
|
||||
<h2 id="语法">语法</h2>
|
||||
<pre class="syntaxbox">Reflect.get(target, propertyKey[, receiver])
|
||||
</pre>
|
||||
<pre><code class="language-javascript">Reflect.get(target, propertyKey[, receiver])
|
||||
</code></pre>
|
||||
<h3 id="参数">参数</h3>
|
||||
<dl>
|
||||
<dt><code>target</code></dt>
|
||||
@@ -21,7 +21,7 @@
|
||||
<p><code>Reflect.get 方法允许你从一个对象中取值</code>。就如同函数(function)里的 <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors">属性访问器</a> 语法。</p>
|
||||
<h2 id="实例">实例</h2>
|
||||
<h3 id="使用_Reflect.get()"><code><font face="Open Sans, Arial, sans-serif">使用 </font>Reflect.get()</code></h3>
|
||||
<pre class="brush: js">// Object
|
||||
<pre><code class="language-javascript">// Object
|
||||
var obj = { x: 1, y: 2 };
|
||||
Reflect.get(obj, "x"); // 1
|
||||
|
||||
@@ -34,7 +34,7 @@ var obj = new Proxy(x, {
|
||||
get(t, k, r) { return k + "bar"; }
|
||||
});
|
||||
Reflect.get(obj, "foo"); // "foobar"
|
||||
</pre>
|
||||
</code></pre>
|
||||
<h2 id="规范">规范</h2>
|
||||
<table class="standard-table">
|
||||
<tbody>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<div></div>
|
||||
<p>静态方法 <code><strong>Reflect</strong></code><strong><code>.getOwnPropertyDescriptor()</code></strong> 与 <a href="Reference/Global_Objects/Object/getOwnPropertyDescriptor" title="Object.getOwnPropertyDescriptor() 方法返回指定对象上一个自有属性对应的属性描述符。(自有属性指的是直接赋予该对象的属性,不需要从原型链上进行查找的属性)"><code>Object.getOwnPropertyDescriptor()</code></a> 方法相似。如果在对象中存在,则返回给定的属性的属性描述符。否则返回 <a href="Reference/Global_Objects/undefined" title="undefined是全局对象的一个属性。也就是说,它是全局作用域的一个变量。undefined的最初值就是原始数据类型undefined。"><code>undefined</code></a>。 </p>
|
||||
<h2 id="语法">语法</h2>
|
||||
<pre class="syntaxbox">Reflect.getOwnPropertyDescriptor(target, propertyKey)
|
||||
</pre>
|
||||
<pre><code class="language-javascript">Reflect.getOwnPropertyDescriptor(target, propertyKey)
|
||||
</code></pre>
|
||||
<h3 id="参数">参数</h3>
|
||||
<dl>
|
||||
<dt><code>target</code></dt>
|
||||
@@ -19,7 +19,7 @@
|
||||
<p><code>Reflect.getOwnPropertyDescriptor</code>方法返回一个属性描述符,如果给定的属性存在于对象中,否则返回 <a href="Reference/Global_Objects/undefined" title="undefined是全局对象的一个属性。也就是说,它是全局作用域的一个变量。undefined的最初值就是原始数据类型undefined。"><code>undefined</code></a> 。 与 <a href="Reference/Global_Objects/Object/getOwnPropertyDescriptor" title="Object.getOwnPropertyDescriptor() 方法返回指定对象上一个自有属性对应的属性描述符。(自有属性指的是直接赋予该对象的属性,不需要从原型链上进行查找的属性)"><code>Object.getOwnPropertyDescriptor()</code></a> 的唯一不同在于如何处理非对象目标。</p>
|
||||
<h2 id="示例">示例</h2>
|
||||
<h3 id="使用_Reflect.getOwnPropertyDescriptor()">使用 <code>Reflect.getOwnPropertyDescriptor()</code></h3>
|
||||
<pre class="brush: js">Reflect.getOwnPropertyDescriptor({x: "hello"}, "x");
|
||||
<pre><code class="language-javascript">Reflect.getOwnPropertyDescriptor({x: "hello"}, "x");
|
||||
// {value: "hello", writable: true, enumerable: true, configurable: true}
|
||||
|
||||
Reflect.getOwnPropertyDescriptor({x: "hello"}, "y");
|
||||
@@ -27,14 +27,14 @@ Reflect.getOwnPropertyDescriptor({x: "hello"}, "y");
|
||||
|
||||
Reflect.getOwnPropertyDescriptor([], "length");
|
||||
// {value: 0, writable: true, enumerable: false, configurable: false}
|
||||
</pre>
|
||||
</code></pre>
|
||||
<h3 id="与_Object.getOwnPropertyDescriptor()_的不同点">与 <code>Object.getOwnPropertyDescriptor() 的不同点</code></h3>
|
||||
<p>如果该方法的第一个参数不是一个对象(一个原始值),那么将造成 <a href="Reference/Global_Objects/TypeError" title="TypeError(类型错误) 对象用来表示值的类型非预期类型时发生的错误。"><code>TypeError</code></a> 错误。而对于 <a href="Reference/Global_Objects/Object/getOwnPropertyDescriptor" title="Object.getOwnPropertyDescriptor() 方法返回指定对象上一个自有属性对应的属性描述符。(自有属性指的是直接赋予该对象的属性,不需要从原型链上进行查找的属性)"><code>Object.getOwnPropertyDescriptor</code></a>,非对象的第一个参数将被强制转换为一个对象处理。</p>
|
||||
<pre class="brush: js">Reflect.getOwnPropertyDescriptor("foo", 0);
|
||||
<pre><code class="language-javascript">Reflect.getOwnPropertyDescriptor("foo", 0);
|
||||
// TypeError: "foo" is not non-null object
|
||||
|
||||
Object.getOwnPropertyDescriptor("foo", 0);
|
||||
// { value: "f", writable: false, enumerable: true, configurable: false }</pre>
|
||||
// { value: "f", writable: false, enumerable: true, configurable: false }</code></pre>
|
||||
<h2 id="规范">规范</h2>
|
||||
<table class="standard-table">
|
||||
<tbody>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<div></div>
|
||||
<p>静态方法 <code><strong>Reflect</strong></code><strong><code>.getPrototypeOf()</code></strong> 与 <a href="Reference/Global_Objects/Object/getPrototypeOf" title="Object.getPrototypeOf() 方法返回指定对象的原型(内部[[Prototype]]属性的值)。"><code>Object.getPrototypeOf()</code></a> 方法是一样的。都是返回指定对象的原型(即,内部的 <code>[[Prototype]]</code> 属性的值)。</p>
|
||||
<h2 id="语法">语法</h2>
|
||||
<pre class="syntaxbox">Reflect.getPrototypeOf(target)
|
||||
</pre>
|
||||
<pre><code class="language-javascript">Reflect.getPrototypeOf(target)
|
||||
</code></pre>
|
||||
<h3 id="参数">参数</h3>
|
||||
<dl>
|
||||
<dt><code>target</code></dt>
|
||||
@@ -17,10 +17,10 @@
|
||||
<p><code>Reflect.getPrototypeOf</code> 返回指定对象的原型 (例如:内部的 <code>[[Prototype]]</code> 属性的值) 。</p>
|
||||
<h2 id="示例">示例</h2>
|
||||
<h3 id="使用_Reflect.getPrototypeOf()">使用 <code>Reflect.getPrototypeOf()</code></h3>
|
||||
<pre class="brush: js">Reflect.getPrototypeOf({}); // Object.prototype
|
||||
<pre><code class="language-javascript">Reflect.getPrototypeOf({}); // Object.prototype
|
||||
Reflect.getPrototypeOf(Object.prototype); // null
|
||||
Reflect.getPrototypeOf(Object.create(null)); // null
|
||||
</pre>
|
||||
</code></pre>
|
||||
<h2 id="规范">规范</h2>
|
||||
<table class="standard-table">
|
||||
<tbody>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<div></div>
|
||||
<p>静态方法 <code><strong>Reflect</strong></code><strong><code>.has()</code></strong> 作用与 <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in"><code>in</code> 操作符</a> 相同。</p>
|
||||
<h2 id="句法">句法</h2>
|
||||
<pre class="syntaxbox">Reflect.has(target, propertyKey)
|
||||
</pre>
|
||||
<pre><code class="language-javascript">Reflect.has(target, propertyKey)
|
||||
</code></pre>
|
||||
<h3 id="参数">参数</h3>
|
||||
<dl>
|
||||
<dt><code>target</code></dt>
|
||||
@@ -19,7 +19,7 @@
|
||||
<p><code>Reflect.has</code> 用于检查一个对象是否拥有某个属性, 相当于<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in"><code>in</code> 操作符</a> 。</p>
|
||||
<h2 id="示例">示例</h2>
|
||||
<h3 id="使用_Reflect.has()">使用 <code>Reflect.has()</code></h3>
|
||||
<pre class="brush: js">Reflect.has({x: 0}, "x"); // true
|
||||
<pre><code class="language-javascript">Reflect.has({x: 0}, "x"); // true
|
||||
Reflect.has({x: 0}, "y"); // false
|
||||
|
||||
// 如果该属性存在于原型链中,返回true
|
||||
@@ -31,7 +31,7 @@ obj = new Proxy({}, {
|
||||
});
|
||||
Reflect.has(obj, "doorbell"); // true
|
||||
Reflect.has(obj, "dormitory"); // false
|
||||
</pre>
|
||||
</code></pre>
|
||||
<h2 id="规范">规范</h2>
|
||||
<table class="standard-table">
|
||||
<tbody>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<div></div>
|
||||
<p><code><font face="Open Sans, Arial, sans-serif">静态方法 </font><strong>Reflect</strong></code><strong><code>.isExtensible()</code></strong> 判断一个对象是否可扩展 (即是否能够添加新的属性)。与它 <a href="Reference/Global_Objects/Object/isExtensible" title="Object.isExtensible() 方法判断一个对象是否是可扩展的(是否可以在它上面添加新的属性)。"><code>Object.isExtensible()</code></a> 方法相似,但有一些不同,详情可见 <a href="#Difference_to_Object.isExtensible()">differences</a>。</p>
|
||||
<h2 id="语法">语法</h2>
|
||||
<pre class="syntaxbox">Reflect.isExtensible(target)
|
||||
</pre>
|
||||
<pre><code class="language-javascript">Reflect.isExtensible(target)
|
||||
</code></pre>
|
||||
<h3 id="参数">参数</h3>
|
||||
<dl>
|
||||
<dt><code>target</code></dt>
|
||||
@@ -18,7 +18,7 @@
|
||||
<h2 id="示例">示例</h2>
|
||||
<h3 id="使用_Reflect.isExtensible()">使用 <code>Reflect.isExtensible()</code></h3>
|
||||
<p>详情可见 <a href="Reference/Global_Objects/Object/isExtensible" title="Object.isExtensible() 方法判断一个对象是否是可扩展的(是否可以在它上面添加新的属性)。"><code>Object.isExtensible()</code></a>。</p>
|
||||
<pre class="brush: js">// New objects are extensible.
|
||||
<pre><code class="language-javascript">// New objects are extensible.
|
||||
var empty = {};
|
||||
Reflect.isExtensible(empty); // === true
|
||||
|
||||
@@ -33,15 +33,15 @@ Reflect.isExtensible(sealed); // === false
|
||||
// Frozen objects are also by definition non-extensible.
|
||||
var frozen = Object.freeze({});
|
||||
Reflect.isExtensible(frozen); // === false
|
||||
</pre>
|
||||
</code></pre>
|
||||
<h3 id="与_Object.isExtensible()_的不同点">与 <code>Object.isExtensible() 的不同点</code></h3>
|
||||
<p>如果该方法的第一个参数不是一个对象(原始值),那么将造成一个 <a href="Reference/Global_Objects/TypeError" title="TypeError(类型错误) 对象用来表示值的类型非预期类型时发生的错误。"><code>TypeError</code></a> 异常。对于 <a href="Reference/Global_Objects/Object/isExtensible" title="Object.isExtensible() 方法判断一个对象是否是可扩展的(是否可以在它上面添加新的属性)。"><code>Object.isExtensible()</code></a>,非对象的第一个参数会被强制转换为一个对象。</p>
|
||||
<pre class="brush: js">Reflect.isExtensible(1);
|
||||
<pre><code class="language-javascript">Reflect.isExtensible(1);
|
||||
// TypeError: 1 is not an object
|
||||
|
||||
Object.isExtensible(1);
|
||||
// false
|
||||
</pre>
|
||||
</code></pre>
|
||||
<h2 id="规范">规范</h2>
|
||||
<table class="standard-table">
|
||||
<tbody>
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
<div><iframe class="interactive interactive-js" frameborder="0" height="250" src="https://interactive-examples.mdn.mozilla.net/pages/js/reflect-ownkeys.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">Reflect.ownKeys(target)
|
||||
</pre>
|
||||
<pre><code class="language-javascript">Reflect.ownKeys(target)
|
||||
</code></pre>
|
||||
<h3 id="参数">参数</h3>
|
||||
<dl>
|
||||
<dt><code>target</code></dt>
|
||||
@@ -19,7 +19,7 @@
|
||||
<p><code>Reflect.ownKeys</code> 方法返回一个由目标对象自身的属性键组成的数组。它的返回值等同于<code><a href="Reference/Global_Objects/Object/getOwnPropertyNames" title="Object.getOwnPropertyNames()方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。"><code>Object.getOwnPropertyNames</code></a>(target).concat(<a href="Reference/Global_Objects/Object/getOwnPropertySymbols" title="Object.getOwnPropertySymbols() 方法返回一个给定对象自身的所有 Symbol 属性的数组。"><code>Object.getOwnPropertySymbols</code></a>(target))。</code></p>
|
||||
<h2 id="示例">示例</h2>
|
||||
<h3 id="使用_Reflect.ownKeys()">使用 <code>Reflect.ownKeys()</code></h3>
|
||||
<pre class="brush: js">Reflect.ownKeys({z: 3, y: 2, x: 1}); // [ "z", "y", "x" ]
|
||||
<pre><code class="language-javascript">Reflect.ownKeys({z: 3, y: 2, x: 1}); // [ "z", "y", "x" ]
|
||||
Reflect.ownKeys([]); // ["length"]
|
||||
|
||||
var sym = Symbol.for("comet");
|
||||
@@ -31,7 +31,7 @@ Reflect.ownKeys(obj);
|
||||
// Indexes in numeric order,
|
||||
// strings in insertion order,
|
||||
// symbols in insertion order
|
||||
</pre>
|
||||
</code></pre>
|
||||
<h2 id="规范">规范</h2>
|
||||
<table class="standard-table">
|
||||
<tbody>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<div></div>
|
||||
<p>静态方法 <code><strong>Reflect</strong></code><strong><code>.preventExtensions()</code></strong> 方法阻止新属性添加到对象 例如:防止将来对对象的扩展被添加到对象中)。该方法与 <a href="Reference/Global_Objects/Object/preventExtensions" title="Object.preventExtensions()方法让一个对象变的不可扩展,也就是永远不能再添加新的属性。"><code>Object.preventExtensions()</code></a>相似,但有一些不同点。详情可见 <a href="#Difference_to_Object.preventExtensions()">differences</a>。</p>
|
||||
<h2 id="语法">语法</h2>
|
||||
<pre class="syntaxbox">Reflect.preventExtensions(target)
|
||||
</pre>
|
||||
<pre><code class="language-javascript">Reflect.preventExtensions(target)
|
||||
</code></pre>
|
||||
<h3 id="参数">参数</h3>
|
||||
<dl>
|
||||
<dt><code>target</code></dt>
|
||||
@@ -18,22 +18,22 @@
|
||||
<h2 id="示例">示例</h2>
|
||||
<h3 id="使用_Reflect.preventExtensions()">使用 <code>Reflect.preventExtensions()</code></h3>
|
||||
<p>详情可见 <a href="Reference/Global_Objects/Object/preventExtensions" title="Object.preventExtensions()方法让一个对象变的不可扩展,也就是永远不能再添加新的属性。"><code>Object.preventExtensions()</code></a>.</p>
|
||||
<pre class="brush: js">// Objects are extensible by default.
|
||||
<pre><code class="language-javascript">// Objects are extensible by default.
|
||||
var empty = {};
|
||||
Reflect.isExtensible(empty); // === true
|
||||
|
||||
// ...but that can be changed.
|
||||
Reflect.preventExtensions(empty);
|
||||
Reflect.isExtensible(empty); // === false
|
||||
</pre>
|
||||
</code></pre>
|
||||
<h3 id="与_Object.preventExtensions()_的不同点">与 <code>Object.preventExtensions()</code> 的不同点</h3>
|
||||
<p>如果该方法的第一个参数不是一个对象(原始值),那么将造成一个 <a href="Reference/Global_Objects/TypeError" title="TypeError(类型错误) 对象用来表示值的类型非预期类型时发生的错误。"><code>TypeError</code></a> 异常。 对于<a href="Reference/Global_Objects/Object/preventExtensions" title="Object.preventExtensions()方法让一个对象变的不可扩展,也就是永远不能再添加新的属性。"><code>Object.preventExtensions()</code></a> 方法, 非对象的第一个参数将被强制转换为对象。</p>
|
||||
<pre class="brush: js">Reflect.preventExtensions(1);
|
||||
<pre><code class="language-javascript">Reflect.preventExtensions(1);
|
||||
// TypeError: 1 is not an object
|
||||
|
||||
Object.preventExtensions(1);
|
||||
// 1
|
||||
</pre>
|
||||
</code></pre>
|
||||
<h2 id="规范">规范</h2>
|
||||
<table class="standard-table">
|
||||
<tbody>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<div></div>
|
||||
<p>静态方法 <code><strong>Reflect</strong></code><strong><code>.set()</code></strong> 工作方式就像在一个对象上设置一个属性。</p>
|
||||
<h2 id="语法">语法</h2>
|
||||
<pre class="syntaxbox">Reflect.set(target, propertyKey, value[, receiver])
|
||||
</pre>
|
||||
<pre><code class="language-javascript">Reflect.set(target, propertyKey, value[, receiver])
|
||||
</code></pre>
|
||||
<h3 id="参数">参数</h3>
|
||||
<dl>
|
||||
<dt><code>target</code></dt>
|
||||
@@ -23,7 +23,7 @@
|
||||
<p><code>Reflect.set</code> 方法允许你在对象上设置属性。它的作用是给属性赋值并且就像 <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors">property accessor</a> 语法一样,但是它是以函数的方式。 </p>
|
||||
<h2 id="示例">示例</h2>
|
||||
<h3 id="使用_Reflect.set()">使用 <code>Reflect.set()</code></h3>
|
||||
<pre class="brush: js">// Object
|
||||
<pre><code class="language-javascript">// Object
|
||||
var obj = {};
|
||||
Reflect.set(obj, "prop", "value"); // true
|
||||
obj.prop; // "value"
|
||||
@@ -42,7 +42,7 @@ var obj = {};
|
||||
Reflect.set(obj); // true
|
||||
Reflect.getOwnPropertyDescriptor(obj, "undefined");
|
||||
// { value: undefined, writable: true, enumerable: true, configurable: true }
|
||||
</pre>
|
||||
</code></pre>
|
||||
<h2 id="规范">规范</h2>
|
||||
<table class="standard-table">
|
||||
<tbody>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<div></div>
|
||||
<p>静态方法 <code><strong>Reflect</strong></code><strong><code>.setPrototypeOf()</code></strong> 与 <a href="Reference/Global_Objects/Object/setPrototypeOf" title="如果对象的[[Prototype]]被修改成不可扩展(通过 Object.isExtensible()查看),就会抛出 TypeError异常。如果prototype参数不是一个对象或者null(例如,数字,字符串,boolean,或者 undefined),则什么都不做。否则,该方法将obj的[[Prototype]]修改为新的值。"><code>Object.setPrototypeOf()</code></a> 方法是一致的。它将指定对象的原型 (即,内部的<code>[[Prototype]] </code>属性)设置为另一个对象或为 <a href="Reference/Global_Objects/null" title="值 null 特指对象的值未设置。它是 JavaScript 基本类型 之一。"><code>null</code></a>。</p>
|
||||
<h2 id="语法">语法</h2>
|
||||
<pre class="syntaxbox">Reflect.setPrototypeOf(target, prototype)
|
||||
</pre>
|
||||
<pre><code class="language-javascript">Reflect.setPrototypeOf(target, prototype)
|
||||
</code></pre>
|
||||
<h3 id="参数">参数</h3>
|
||||
<dl>
|
||||
<dt><code>target</code></dt>
|
||||
@@ -19,7 +19,7 @@
|
||||
<p><code>Reflect.setPrototypeOf</code> 方法改变指定对象的原型 (即,内部的 <code>[[Prototype]]</code> 属性值)。</p>
|
||||
<h2 id="示例">示例</h2>
|
||||
<h3 id="使用_Reflect.setPrototypeOf()">使用 <code>Reflect.setPrototypeOf()</code></h3>
|
||||
<pre class="brush: js">Reflect.setPrototypeOf({}, Object.prototype); // true
|
||||
<pre><code class="language-javascript">Reflect.setPrototypeOf({}, Object.prototype); // true
|
||||
|
||||
// It can change an object's [[Prototype]] to null.
|
||||
Reflect.setPrototypeOf({}, null); // true
|
||||
@@ -31,7 +31,7 @@ Reflect.setPrototypeOf(Object.freeze({}), null); // false
|
||||
var target = {};
|
||||
var proto = Object.create(target);
|
||||
Reflect.setPrototypeOf(target, proto); // false
|
||||
</pre>
|
||||
</code></pre>
|
||||
<h2 id="规范">规范</h2>
|
||||
<table class="standard-table">
|
||||
<tbody>
|
||||
|
||||
Reference in New Issue
Block a user