blob: dd119aba3f1ee1dcc2e68a3223b6310f5108378a (
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
---
title: JSClass
slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSClass
translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSClass
---
<h3 id=".E6.91.98.E8.A6.81" name=".E6.91.98.E8.A6.81">摘要</h3>
<p><b>数据结构</b> 定义一个基本类用于建立和维护JS对象。</p>
<h3 id=".E8.AF.AD.E6.B3.95" name=".E8.AF.AD.E6.B3.95">语法</h3>
<pre>struct JSClass {
char *name;
uint32 flags;
/* Mandatory non-null function pointer members. */
JSPropertyOp addProperty;
JSPropertyOp delProperty;
JSPropertyOp getProperty;
JSPropertyOp setProperty;
JSEnumerateOp enumerate;
JSResolveOp resolve;
JSConvertOp convert;
JSFinalizeOp finalize;
/* Optionally non-null members start here. */
JSGetObjectOps getObjectOps;
JSCheckAccessOp checkAccess;
JSNative call;
JSNative construct;
JSXDRObjectOp xdrObject;
JSHasInstanceOp hasInstance;
JSMarkOp mark;
JSReserveSlotsOp reserveSlots;
};
</pre>
<table class="fullwidth-table">
<tbody>
<tr>
<th>名称</th>
<th>类型</th>
<th>描述</th>
</tr>
<tr>
<td><code>name</code></td>
<td><code>char *</code></td>
<td>类名</td>
</tr>
<tr>
<td><code>flags</code></td>
<td><code>uint32</code></td>
<td>类的属性(成员变量)。0表明属性不是一个集合. 属性值可以是下面这些值中的一个或多个:
<ul>
<li><code><a href="cn/JSAPI_Reference/JSCLASS_HAS_PRIVATE">JSCLASS_HAS_PRIVATE</a></code>: 类可以使用私有数据。</li>
<li><code><a href="cn/JSAPI_Reference/JSCLASS_NEW_ENUMERATE">JSCLASS_NEW_ENUMERATE</a></code>: 返回由类定义的<code>getObjectOps</code>方法获取所有属性的一个新方法。</li>
<li><code><a href="cn/JSAPI_Reference/JSCLASS_NEW_RESOLVE">JSCLASS_NEW_RESOLVE</a></code>: 返回由类定义的<code>getObjectOps</code>方法获取属性值的一个新方法。</li>
</ul>
</td>
</tr>
<tr>
<td><code>addProperty</code></td>
<td><code>JSPropertyOp</code></td>
<td>为类增加属性的函数。</td>
</tr>
<tr>
<td><code>delProperty</code></td>
<td><code>JSPropertyOp</code></td>
<td>从类中删除属性的函数。</td>
</tr>
<tr>
<td><code>getProperty</code></td>
<td><code>JSPropertyOp</code></td>
<td>获取属性值的函数。</td>
</tr>
<tr>
<td><code>setProperty</code></td>
<td><code>JSPropertyOp</code></td>
<td>设置属性值的函数</td>
</tr>
<tr>
<td><code>enumerate</code></td>
<td><code>JSEnumerateOp</code></td>
<td>枚举类所有属性的函数。</td>
</tr>
<tr>
<td><code>resolve</code></td>
<td><code>JSResolveOp</code></td>
<td>Method for resolving property ambiguities.</td>
</tr>
<tr>
<td><code>convert</code></td>
<td><code>JSConvertOp</code></td>
<td>进行属性值转换的函数。</td>
</tr>
<tr>
<td><code>finalize</code></td>
<td><code>JSFinalizeOp</code></td>
<td>将类设为不可修改(finalizing)的函数。</td>
</tr>
<tr>
<td><code>getObjectOps</code></td>
<td><code>JSGetObjectOps</code></td>
<td>为类定义重载方法指向一个可选的结构。如果你不想重载类的默认方法,可以将<code>getObjectOps</code> 设为 <code>NULL</code>。</td>
</tr>
<tr>
<td><code>checkAccess</code></td>
<td><code>JSCheckAccessOp</code></td>
<td>为类或对象操作结构指定可选的自定义请求控制方法。如果你不想提供自定义的请求控制,设置此值为<code>NULL</code>。</td>
</tr>
<tr>
<td><code>call</code></td>
<td><code>JSNative</code></td>
<td>为对象提供替换这个类的方法。</td>
</tr>
<tr>
<td><code>construct</code></td>
<td><code>JSNative</code></td>
<td>为对象提供方法去替换这个类的构造器。</td>
</tr>
<tr>
<td><code>xdrObject</code></td>
<td><code>JSXDRObjectOp</code></td>
<td>指向一个可选的XDR对象和它的方法。如果你不想使用XDR, 设置这个值为 <code>NULL</code>。</td>
</tr>
<tr>
<td><code>hasInstance</code></td>
<td><code>JSHasInstanceOp</code></td>
<td>Pointer to an optional <code>hasInstance</code> method for this object. If you do not provide a method for <code>hasInstance</code>, set this pointer to <code>NULL</code>.</td>
</tr>
<tr>
<td><code>mark</code></td>
<td><code>JSMarkOp</code></td>
<td>Pointer to an optional <code>mark</code> method for this object. If you do not provide a method for <code>mark</code>, set this pointer to <code>NULL</code>.</td>
</tr>
<tr>
<td><code>reserveSlots</code></td>
<td><code>JSReserveSlotsOp</code></td>
<td>Pointer to an optional <code>reserveSlots</code> method for this object. If you do not provide a method for <code>reserveSlots</code>, set this pointer to <code>NULL</code>.</td>
</tr>
</tbody>
</table>
<p> </p>
|