我有一个网页。在我的网页中,我引用了一些我在一个名为“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>
当我加载网页时,收到错误消息:
Uncaught TypeError: spacer.initialize is not a function.
我不明白。我做错了什么。
答案 0 :(得分:2)
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
答案 1 :(得分:2)
更改定义方式
//from
spacer.initialize(options) {
spacer.options = options;
}
//to
spacer.initialize = function(options) {
spacer.options = options;
}
在你的JS中,从window.resize调用中删除()
spacer.initialize({ id:1 });
window.onresize = spacer;
答案 2 :(得分:0)
顺便说一句,看起来你似乎正在尝试做两件事中的一件并且不舒服地坐在中间。在这种情况下,我个人会去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 构建空间对象实例:
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' }