blob: 5c722986ef0f5e4fe6710cff17680fd07691aaab (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
---
title: Object.prototype.__lookupGetter__()
slug: Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__
translation_of: Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__
---
<div>{{JSRef("Global_Objects", "Object")}} {{ Non-standard_header }} {{ Deprecated_header }}</div>
<h2 id="Summary">概述</h2>
<p><code><strong>__lookupGetter__</strong></code> 方法会返回当前对象上指定属性的<strong>属性读取访问器函数(getter)。</strong></p>
<h2 id="Syntax">语法</h2>
<pre class="syntaxbox"><code><em>obj</em>.__lookupGetter__(<em>sprop</em>)</code></pre>
<h3 id="Parameters">参数</h3>
<dl>
<dt><code>sprop</code></dt>
<dd>属性名</dd>
</dl>
<h2 id="Examples">示例</h2>
<pre class="brush: js">var obj = {
get foo() {
return Math.random() > 0.5 ? "foo" : "bar";
}
};
obj.__lookupGetter__("foo")
// (function (){return Math.random() > 0.5 ? "foo" : "bar"}) </pre>
<h2 id="Description">附注</h2>
<p><code><strong>__lookupGetter__</strong></code> 方法是非标准的,我们应该使用标准中定义的方法来完成同样的事情,那就是 {{jsxref("Object.getOwnPropertyDescriptor()")}} 方法:</p>
<pre class="brush: js">var obj = {
get foo() {
return Math.random() > 0.5 ? "foo" : "bar";
}
};
Object.getOwnPropertyDescriptor(obj, "foo").get
// (function (){return Math.random() > 0.5 ? "foo" : "bar"})
</pre>
<p>如果那个访问器属性是继承来的,你还需要使用 {{jsxref("Object.getPrototypeOf()")}}:</p>
<pre class="brush: js">var obj = {};
var prototype = Object.getPrototypeOf(obj);
Object.getOwnPropertyDescriptor(prototype, "foo").get
// function __proto__() {[native code]}
</pre>
<h2 id="Specifications">规范</h2>
<p>不属于任何规范。</p>
<h2 id="浏览器兼容性">浏览器兼容性</h2>
{{Compat}}
<h2 id="See_also">相关链接</h2>
<ul>
<li>{{jsxref("Object.__lookupSetter__", "Object.prototype.__lookupSetter__()")}}</li>
<li>{{jsxref("Operators/get", "get")}} 运算符</li>
<li>{{jsxref("Object.getOwnPropertyDescriptor()")}} 和 {{jsxref("Object.getPrototypeOf()")}}</li>
<li>{{jsxref("Object.__defineGetter__", "Object.prototype.__defineGetter__()")}}</li>
<li>{{jsxref("Object.__defineSetter__", "Object.prototype.__defineSetter__()")}}</li>
<li><a href="/zh-CN/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters" title="JavaScript/Guide/Creating_New_Objects/Defining_Getters_and_Setters">JS 指南:定义访问器属性</a></li>
</ul>
|