很难理解为什么这个函数在 JavaScript 中不起作用
having hard time why this function doesn't work in javascript
我很难理解为什么这个东西不起作用。 问题出在哪里?这是将值传递给此函数的正确方法吗,还有其他方法吗?
seqer.set_prefix = 'Q';
seqer.set_seq = 1000;
是否可以这样做:
sequer.set_prefix('Q');
var serial_maker = function () {
var prefix = '';
var seq = 0;
return {
set_prefix: function (p) {
prefix = p;
},
set_seq: function (s) {
seq = s;
},
gensym: function () {
var result = prefix + seq;
seq += 1;
return result;
}
};
}();
var seqer = serial_maker();
seqer.set_prefix = 'Q'; // is this the right way to pass in values to this function, are there other ways? is it possible to write like this sequer.set_prefix('Q);
seqer.set_seq = 1000; // same here?
seqer.gensym()
;
匿名函数在 JavaScript 中是一等公民 - 您通常可以像对待普通函数一样对待它们(除了它们没有给定的标识符,除非您将它们分配给名称)。这里有一个关于它们的很好的教程 - 它们非常强大,我认为它们是 JavaScript 中最好的东西之一。
所以是的,做:
seqer.set_prefix = 'Q';
seqer.set_seq = 1000;
是不正确的。您正在用这些常量覆盖函数。您的猜测是正确的 - 要调用它们,您将使用:
seqer.set_prefix('Q');
seqer.set_seq(1000);
顺便说一下,您的函数中还有另一个错误:
var serial_maker = function () {
...
return {
...
};
}(); // <- right here
您正在定义一个匿名函数,但会立即调用它。所以不幸的是,var serial_maker
不会是一个serial_maker - 它将是返回的对象。当然,后续var seqer = serial_maker();
会失败,因为对象不是函数。
set_prefix
和set_seq
是方法。要使用它们,请按以下方式执行此操作:
var seqer = serial_maker();
seqer.set_prefix('Q');
seqer.set_seq(1000);
seqer.gensym();
此外,要创建serial_maker()
"模块",您需要拥有这些模块来创建它。
var serial_maker = (function () {
//code here
}());
//or
var serial_maker = (function () {
//code here
})();
相关文章:
- 幻灯片滚动javascript不起作用
- 当我在浏览器中打开HTML文件时,javascript不起作用
- 来自MDN的循环示例的JavaScript不起作用
- 在IE中切换javascript不起作用的复选框
- 在SVG中创建带有外来对象的文本区域的Javascript不起作用
- 寻呼<李>javascript不起作用
- 想制作一个基于URL的音频播放器,但Javascript不起作用
- 从Android设备浏览时Javascript不起作用
- 在 Javascript 不起作用的情况下为数字添加逗号
- 获取PHP变量的JavaScript不起作用
- 有些JavaScript不起作用
- 保存HTML文件后,Javascript不起作用
- onClick javascript不起作用
- 在Wicket ModalWindow中使用Panel时,HTML中的Javascript不起作用
- Jquery顶部的两行Javascript不起作用
- 当我通过Node服务器提供HTML时,为什么我的页面Javascript不起作用
- Javascript不起作用,但当放置断点并从chrome调试器工具中单击文件时,它可以正常工作
- 为不同的屏幕分辨率加载css样式的Javascript不起作用
- 在IE9中javascript不起作用,但在打开控制台后它就起作用了
- 为什么Javascript不起作用