创建Undercore中使用的安全参考对象技术
Create a safe reference object technique used in Underscore
当我浏览Underscore
中的代码时:http://underscorejs.org/docs/underscore.html
我偶然发现
var _ = function(obj) {
if (obj instanceof _) return obj;
if (!(this instanceof _)) return new _(obj);
this._wrapped = obj;
};
带注释
创建对Undercore对象的安全引用,以便在下面使用。
我真的不明白目的。而不是
(function() {
var _ = function(obj) {
if (obj instanceof _) return obj;
if (!(this instanceof _)) return new _(obj);
this._wrapped = obj;
};
_.VERSION = '1.7.0';
})();
为什么我们不能简单地拥有
(function() {
var _ = {};
_.VERSION = '1.7.0';
})();
我可以知道Underscore
项目使用技术背后的想法吗?
这强制使用构造函数模式创建对象:_()
将等效于new _()
然后,如果你想扩展用_(obj)
(或new _(obj)
)创建的所有实例ie对象的行为,并且内存使用有限,你可以扩展构造函数的原型。
function Ctor(){}
Ctor.prototype.someFunction=function(){};
var instance1=new Ctor();
var instance2=new Ctor();
在某种程度上等同于
function factory(){
var obj={};
obj.someFunction=function(){}
return obj;
}
var instance1=factory();
var instance2=factory();
但是第二个版本将使用更多的内存,因为它将把函数添加到每个实例,而不是单个通用原型
相关文章:
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- 相位器状态未捕获参考错误
- 使用javascript存储变量的最安全方式
- 聚合物0.5.5:核心列表中的条件模板和/或模板动态参考
- Javascript袖珍参考,第121页:这是怎么回事;猴子补丁”;方法应该有效
- 是否存在React Native“;WEB代码安全防护”;
- 内容安全策略:页面's设置阻止加载资源
- 如何通过安全的https连接在javascript中使用基于soap xml的Web服务
- 导致内容安全策略(CSP)冲突错误的本地jquery.js文件
- 如何在Google chrome安全首选项文件中创建扩展安全哈希代码
- ES6 模板文字是否比 eval 更安全
- 防止“;jQuery(html)"防止触发浏览器请求图像和其他参考内容
- CORS保持在SecurityError上:操作不安全
- 旋转木马;启用内容安全策略时无法工作
- Rails 4资产管道Heroku生产javascript参考问题
- 从自己的安全系统中重新找回自己
- 关于ajax的安全问题
- 如何使用app和secret进行安全的解析初始化
- 是一个javascript bookmarklet,可以设置破坏跨域安全的域cookie
- 创建Undercore中使用的安全参考对象技术