Javascript 无法在同一对象中使用此函数从另一个函数访问函数
我有以下资料:Javascript 无法在同一对象中使用此函数从另一个函数访问函数,javascript,object,Javascript,Object,我有以下资料: $scope.option = { generateID:function(){ return Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5); }, values : [ {id:this.generateId()}, {id:this.generateId()},
$scope.option = {
generateID:function(){
return Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5);
},
values : [
{id:this.generateId()},
{id:this.generateId()},
{id:this.generateId()},
{id:this.generateId()}
],
markCorrect : function(option){
},
remove:function(option)
{
this.values = this.values.filter(function(value){return value.id!=option.id})
}
}
我总是得到一个
this.generateId不是一个函数
错误。我很确定我错过了一些基本的东西 最好将id生成器函数存储在单独的函数中,以便更容易引用:
function generateId = function() {
return Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5);
}
$scope.option = {
generateID: generateId,
values : [
{id: generateId()},
{id: generateId()},
{id: generateId()},
{id: generateId()}
],
markCorrect : function(option){
},
remove:function(option)
{
this.values = this.values.filter(function(value){return value.id!=option.id})
}
}
主要问题是,在声明它的过程中,您试图访问<代码> $范围>选项>代码>的属性。尝试这样做:
$scope.option = (function () {
function generateId () {
/* logic */
}
return {
values: [
{id: generateId()}
// ...
],
markCorrect: function () {},
remove: function () {}
};
}) ();
这是“显示模块模式”,即返回一个对象的函数,该对象在某些其他数据或功能上形成闭包。存在输入错误;将
generateID
重命名为generateID
此
指的是包含id
的对象,而不是选项
对象。您注意到这些是值数组中的对象,对吗?这些是此
引用的对象。{id:$scope.option.generateId()}也不起作用!如果要在values
中使用全局generateID
函数,行generateID:generateID,
的意义是什么?@Sam可能$scope.option的消费者想要使用它的生成器函数?除此之外,我将删除generateID memberLooks干净且可恢复!正是我想要的解释!!谢谢