Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4330bfc

Browse files
committed
私有属性和方法 之 对象字面量和私有成员 翻译完毕
1 parentf0afe76 commit4330bfc

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

‎chapter5.markdown‎

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,9 +266,46 @@ JavaScript不像Java或者其它语言,它没有专门的提供私有、保护
266266

267267
当你需要传递所有的数据时,有另外一种方法,就是使用通用的对象复制函数创建specs对象的一个副本。下一章提供了两个这样的函数——一个叫extend(),它会浅复制一个给定的对象(只复制顶层的成员)。另一个叫extendDeep(),它会做深复制,遍历所有的属性和嵌套的属性。
268268

269+
###对象字面量和私有成员
269270

271+
到目前为止,我们只看了使用构建函数创建私有成员的示例。如果使用对象字面量创建对象时会是什么情况呢?是否有可能含有私有成员?
270272

273+
如你前面所看到的那样,私有数据使用一个函数来包裹。所以在使用对象字面量时,你也可以使用一个立即执行的匿名函数创建的闭包。例如:
271274

275+
var myobj; // this will be the object
276+
(function () {
277+
// private members
278+
var name = "my, oh my";
279+
280+
// implement the public part
281+
// note -- no `var`
282+
myobj = {
283+
// privileged method
284+
getName: function () {
285+
return name;
286+
}
287+
};
288+
}());
289+
290+
myobj.getName(); // "my, oh my"
291+
292+
还有一个原理一样但看起来不一样的实现示例:
293+
294+
var myobj = (function () {
295+
// private members
296+
var name = "my, oh my";
297+
298+
// implement the public part
299+
return {
300+
getName: function () {
301+
return name;
302+
}
303+
};
304+
}());
305+
306+
myobj.getName(); // "my, oh my"
307+
308+
这个例子也是所谓的“模块模式”的基础,我们稍后将讲到它。
272309

273310

274311

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp