JavaScript函数正在抛出未捕获的TypeError

JavaScript函数正在抛出未捕获的TypeError,javascript,Javascript,我有一个网页。在我的网页中,我引用了我在一个名为spacer.js的文件中编写的一些JavaScript。spacer.js更复杂,但一般设置如下: function spacer() { // do stuff console.log(spacer.options); } spacer.initialize = function(options) { spacer.options = options; }; 然后,在我的网页中,我有: <script type="text

我有一个网页。在我的网页中,我引用了我在一个名为spacer.js的文件中编写的一些JavaScript。spacer.js更复杂,但一般设置如下:

function spacer() {
  // do stuff
  console.log(spacer.options);
}

spacer.initialize = function(options) {
  spacer.options = options;
};
然后,在我的网页中,我有:

<script type="text/javascript" src="./spacer.js"></script>
<script type="text/javascript">
  spacer.initialize({ id:1 });
  window.onresize = spacer();
</script>
我不明白。我做错了什么

function spacer() {
  // do stuff
  console.log(spacer.options);
}
spacer.initialize = function(options) { // needed an assignment operator and function keyword
   spacer.options = options;
}
要创建方法,需要使用function关键字

对于浏览器,此

spacer.initialize(options) {
  spacer.options = options;
}
是这样解释的

spacer.initialize(options); // method evocation
{spacer.options = options;}; // anonymous object 

改变它的定义方式

//from
spacer.initialize(options) {
  spacer.options = options;
}

//to
spacer.initialize = function(options) {
  spacer.options = options;
}
在JS中,删除from window.resize调用

spacer.initialize({ id:1 });
window.onresize = spacer;

作为一个旁观者,看起来你想做两件事之一,不舒服地坐在中间。在这种情况下,我个人倾向于1,但最好还是坚持其中一个

1使用方法创建对象

var spacer = {};

spacer.initialize = function (options) {
    this.options = options;
}

spacer.getOptions = function () {
    return this.options;
}

spacer.initialize({ name: 'spacer' });
spacer.getOptions(); // { name: spacer });
2使用构造函数构建空间对象实例:

function Spacer() {}

Spacer.prototype.initialize = function (options) {
  this.options = options;
  return this;
}

Spacer.prototype.getOptions = function () {
  return this.options;
}

var spacer = new Spacer().initialize({ name: 'spacer' });

spacer.getOptions(); // { name: 'spacer' }

我不明白你怎么会在没有一个SyntaxError@Teemu&War10ck:Gah,你说得对。在so ASI启动后需要换行。未捕获的TypeError:spacer.initialize不是函数。没有更新的问题代码,你没有。但是window.onresize=spacer;将undefined指定给onresize,因为间隔符不返回任何内容。src=./spacer.js不应该是src=spacer.js吗?您应该包括一个关于更改内容和原因的解释,无论多么简短。这将使答案更有帮助。我做到了。不幸的是,这没有起作用。还是同样的错误。我假设间隔是一个函数,函数是一个对象。所以你应该可以给它添加方法,我做到了。不幸的是,这没有起作用。还是一样的错误。
function Spacer() {}

Spacer.prototype.initialize = function (options) {
  this.options = options;
  return this;
}

Spacer.prototype.getOptions = function () {
  return this.options;
}

var spacer = new Spacer().initialize({ name: 'spacer' });

spacer.getOptions(); // { name: 'spacer' }