JavaScript窗口名称空间-我能了解一下它在做什么吗?
我有一些我正在努力理解的代码。我不是JavaScript方面的专家(我有一个基本的掌握),我一直在阅读DOM和名称空间(以及JavaScript窗口名称空间-我能了解一下它在做什么吗?,javascript,namespaces,coffeescript,javascript-namespaces,Javascript,Namespaces,Coffeescript,Javascript Namespaces,我有一些我正在努力理解的代码。我不是JavaScript方面的专家(我有一个基本的掌握),我一直在阅读DOM和名称空间(以及console.log()'ing变量),试图了解这是怎么做的(不幸的是没有用) 这段代码超出了我的理解范围,我希望有人能给我解释一下它的功能,让我“哑口无言” 这是咖啡脚本(我将把JavaScript放在最后): 我将尝试回答3个问题: 1.-切片 slice()是js中所有数组的内置方法。它用于复制一个数组,获得一个新数组,而不是对原始数组的引用(在js中,默认情况下通
console.log()
'ing变量),试图了解这是怎么做的(不幸的是没有用)
这段代码超出了我的理解范围,我希望有人能给我解释一下它的功能,让我“哑口无言”
这是咖啡脚本(我将把JavaScript放在最后):
我将尝试回答3个问题: 1.-切片 slice()是js中所有数组的内置方法。它用于复制一个数组,获得一个新数组,而不是对原始数组的引用(在js中,默认情况下通过引用复制数组) 行
窗口。uu slice=[].slice
正在窗口中创建一个名为uu slice
的新方法,其值是本机js方法slice
的副本
稍后在这里使用:\u slice.call(arguments)
看看
2.-功能
namespace=(目标、名称、块)->
没错,这是coffeescript语法,它将生成一个常规函数及其参数
3.-函数和参数
引用:“如果名称空间定义了3个参数,我不明白为什么这样做有效……”
所有常规函数(不是箭头函数)都有一个名为参数的内置对象
这里使用的是:
if (arguments.length < 3) {...}
if(arguments.length<3){…}
通过这种方式,您可以检查函数的参数数量
检查
最后,在我看来,如果你不是很熟悉javascript,你应该尝试学习vanilla js的语法,而不是coffeescript。此外,咖啡脚本每天使用较少
(function() {
var __slice = [].slice;
(function(window) {
'use strict';
var namespace;
window.__slice = [].slice;
namespace = function(target, name, block) {
var item, top, _i, _len, _ref, _ref1;
if (arguments.length < 3) {
_ref = [window].concat(__slice.call(arguments)), target = _ref[0], name = _ref[1], block = _ref[2];
}
top = target;
_ref1 = name.split('.');
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
item = _ref1[_i];
target = target[item] || (target[item] = {});
}
return block(target, top);
};
return namespace('my_app', function(exports, top) {
return exports.namespace = namespace;
});
})(window);
}).call(this);
if (arguments.length < 3) {...}