作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我读过,与其简单地编写一堆函数,不如使用对象字面量。
谁能用例子解释一下对象字面量的优点是什么,因为到目前为止我还不明白。
谢谢
最佳答案
正如 Russ Cam 所说,您可以避免污染全局命名空间,这在当今组合来自多个位置(TinyMCE 等)的脚本时非常重要。
正如 Alex Sexton 所说,它也有助于良好的代码组织。
如果您正在使用这种技术,我建议您使用模块模式。这仍然使用对象字面量,但作为作用域函数的返回值:
var MyThingy = (function() {
function doSomethingCool() {
...
}
function internalSomething() {
....
}
function anotherNiftyThing() {
// Note that within the scoping function, functions can
// call each other direct.
doSomethingCool();
internalSomething();
}
return {
doSomethingCool: doSomethingCool,
anotherNiftyThing: anotherNiftyThing
};
})();
外部使用:
MyThingy.doSomethingCool();
作用域函数包裹了所有函数,然后您立即调用它并存储它的返回值。优点:
{name: function() { ... }}
格式,您的所有函数都是匿名的,即使引用它们的属性有名称。)名称帮助工具帮助您,从显示调试器中的调用堆栈,告诉您哪个函数抛出异常。 (2015 年更新:最新的 JavaScript 规范,ECMAScript 第 6 版,定义了 JavaScript 引擎必须推断函数名称的大量方式。其中之一是将函数分配给属性,如我们的{name: function() { ... }}
示例。所以当引擎实现 ES6 时,这个原因就会消失。)internalSomething
)。页面上没有其他代码可以调用这些函数;他们是真正的私有(private)。只有您最后在返回语句中导出的那些在作用域函数之外是可见的。返回不同函数的例子:
var MyUtils = (function() {
function hookViaAttach(element, eventName, handler) {
element.attachEvent('on' + eventName, handler);
}
function hookViaListener(element, eventName, handler) {
element.addEventListener(eventName, handler, false);
}
return {
hook: window.attachEvent ? hookViaAttach : hookViaListener
};
})();
MyUtils.hook(document.getElementById('foo'), 'click', /* handler goes here */);
关于JavaScript - 对象字面量的优点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1600130/
1.字面常量 (1)字面意思是啥就是啥,看其表示就可以知道其值和类型。 (2)有值无名,一用来初始化变量,与一种字符相关联。 #include <stdio.h>int main()
我是一名优秀的程序员,十分优秀!