为什么我不能从外部访问我的javascript构造函数
Why can I not access my javascript constructors function from outside
通过这种方式创建我的对象:
var myViewModel = new MyViewModel("other");
为什么我不能从视图模型之外调用myViewModel.setHasOne(value)
?
我总是收到这样的错误:
未捕获的类型错误:无法调用未定义的方法"setHasOne"
我知道我可以直接设置属性,但我想知道如何使用方法进行设置?
这是我的功能:
function MyViewModel(other) {
var self = this;
self.other = other;
self.hasOne = false;
this.setHasOne= function (value) {
self.hasOne = value;
};
return this;
}
您的代码没有任何问题,它应该可以工作,也许您在某个地方有拼写错误。但根据错误,问题不在于定义方法,而在于类的实例,错误显示:
Uncaught TypeError: Cannot call method 'setHasOne' of undefined
这意味着,无论出于何种原因,您的变量"myViewModel"都是未定义的,因此它无法为未定义的值找到"setHasOne"。
关于代码,在名为"Privileged methods"的构造函数中定义方法。这种方法的唯一好处是,它们可以访问构造函数内部定义的私有变量。如果您没有使用此功能,最好将您的方法定义为"公共方法"。原因是,公共方法为类的每个实例使用共享内存空间。
试试这个
function MyViewModel(other) {
var self = this;
this.other = other;
this.hasOne = false;
}
MyViewModel.prototype.setHasOne = function(value) {
this.hasOne = value;
};
注意:构造函数中不需要return
语句,因为您已经有权访问this
。
相关文章:
- 我的javascript for循环不起作用
- 如何将我的javascript库公开给其他客户端使用
- 可以Resharper在我的javascript函数声明中添加分号
- 为什么我的JavaScript堆栈排序函数不起作用
- 页面在我的javascript执行后重新加载,我不希望它这样做
- MVC正在忽略我的Javascript文件
- 为什么我的javascript程序没有将其转换为整数而不是字符串
- 为什么我的JavaScript在Safari上的严格模式下不能正常工作
- 我的javascript太慢了
- 由于某种原因,我的JavaScript函数无法工作
- 为什么我的javascript脚本在页面加载时运行,而不是使用onclick
- 我的Javascript代码出错
- 为什么我的javascript和jquery源文件始终不加载
- AJAX:为什么不是't我的javascript与内容一起加载
- 为什么不是't我的javascript向Project Euler返回正确答案's排名第一
- 为什么当我在带有锚点的页面之间移动时,Rails不重新加载我的javascript文件
- Num doenst在我的javascript中工作
- 在我的JavaScript模块中绑定一个点击事件
- 为什么我的JavaScript函数没有返回选中的数组值
- 使用Ajax将我的Javascript变量传递给PHP