Javascript:对象内部的函数不工作
Javascript: Function inside object not working
我试图在Javascript中创建一个控制器,它将响应按钮单击并相应地更改视图。
我有一个函数是这样工作的:
document.getElementById("reset").onclick = function () {
//do something
};
然而,当我试图将函数放在控制器对象中时,我得到一个"意外的令牌"错误:
var controller = {
this.reset = document.getElementById("reset").onclick = function () {
//do something
};
}
有两件事我不确定:
- 如何修复此错误?(我知道这是由于范围,但不知道如何修复它的方式,仍然遵循MVC模式) 一般来说,这是一个好方法去创建一个控制器对象吗?(我是新的MVC模型,不知道我是否遵循最佳实践。)
谢谢。
这个错误是由于不能像那样声明对象,有不同的方法可以做到:
var obj1 = {
a : function() {
console.log('obj1');
}
};
var obj2 = function() {
var b = function() {
console.log('obj2');
};
return {
a: b
}
};
var obj3 = function() {
this.a = function() {
console.log('obj3');
}
};
然后使用它
obj1.a; //prints obj1
obj2().a; //prints obj2
new obj3().a; //prints obj3.
关于如何组织你的对象是基于意见的,但我喜欢这样做。
var Controller = function() {
this.attachEvents = function() {
document.getElementById("reset").onclick = reset;
}
var reset = function() {
console.log('reset');
};
}
new Controller().attachEvents();
另一个选项是…
var Controller = function() {
this.reset = function() {
console.log('reset');
};
}
var controller = new Controller();
document.getElementById("reset").onclick = controller.reset;
这不是一个有效的Javascript对象结构,但如果它适合您,您可以在下面这样做
var controller = {
reset : function () {
document.getElementById("reset").onclick = function(){
//do your work here
}
}
}
逻辑完全取决于你/开发者他/她想如何处理事情。
或者你可以在外面做绑定,比如
var controller = {
reset : function () {
//what to do to rsest
}
}
,然后在别处绑定
//when to run reset method
document.getElementById("reset").onclick = controller.reset;
相关文章:
- onmouseout函数工作不正常
- 我无法使onmouseout函数工作
- Javascript”;结束”;函数工作不稳定
- HTML JavaScript,我如何能够通过给每个元素一个不同的Id来使用JavaScript使这个函数工作
- Javascript:onclick函数工作一次,页面就会恢复到原来的状态
- jQuery toggle()函数工作不正常
- Node.js npm opn-can't使回调函数工作
- 添加两个数字的JavaScript函数工作不正常
- 调用在Jquery中未作为链接函数工作
- 将PHP变量传递给Javascript不能通过PHP函数工作(与全局变量无关)
- 为什么我需要在 javascript 函数工作之前按提交按钮 2 次
- 使 JavaScript 函数工作时遇到麻烦
- 如何使 clearInterval 函数工作
- 如何使 then 函数工作
- 如何让我的包含函数工作
- Promise.all 不应该作为传递给 .then 的函数工作
- 我无法让它作为 JavaScript 函数工作(我在控制台时得到我想要的返回值.log但我不能将其作为函数调用)
- JavaScript on change 函数工作得不好
- jquery next()函数工作不正常
- Jquery hasClass()函数工作不正常