这样我创建了我的对象:
var myViewModel = new MyViewModel("other");
为什么我不能在viewmodel之外调用myViewModel.setHasOne(value)
?
我总是得到这个错误:
未捕获的TypeError:无法调用未定义的方法'setHasOne'
我知道我可以直接设置属性,但我想知道如何使用方法来完成它?
这是我的功能:
function MyViewModel(other) {
var self = this;
self.other = other;
self.hasOne = false;
this.setHasOne= function (value) {
self.hasOne = value;
};
return this;
}
答案 0 :(得分:0)
试试这个
function MyViewModel(other) {
var self = this;
this.other = other;
this.hasOne = false;
}
MyViewModel.prototype.setHasOne = function(value) {
this.hasOne = value;
};
注意:您不需要构造函数中的return
语句,因为您已有权访问this
。
答案 1 :(得分:0)
您的代码没有任何问题,它应该可以工作,也许您在某处有拼写错误。但基于错误,问题不在于定义方法,而在于您的类的实例,错误说:
Uncaught TypeError: Cannot call method 'setHasOne' of undefined
这意味着无论出于何种原因,您的变量“myViewModel”未定义,因此无法为未定义的值找到“setHasOne”。
关于您的代码,在构造函数中定义名为“Privileged Methods”的方法。这种方法的唯一好处是它们可以访问在构造函数中定义的私有变量。如果您不使用此功能,最好将您的方法定义为“公共方法”。原因是,公共方法为类的每个实例使用共享内存空间。