我一直在编写一个工作脚本,并认为通过这样做会非常聪明:
var signRenderer;
$.ajax({
type: "POST",
url: "php/***.php",
dataType:'json',
data: {
id: photoArray[curImg].id,
},
success: function(data, statusText, jqXHR) {
data = data.data;
signRenderer = new SignRenderer({
sign: $('.sign-render'),
signId: photoArray[curImg].id,
form: $('.input-form'),
north: new Sign({
id: data.N.id,
signId: photoArray[curImg].id,
isOn: data.N.visible,
disabled: data.N.disabled,
position: 'n',
direction: data.N.direction,
restriction: data.N.restriction,
periods: data.N.periods,
subtitle: data.N.subtitle,
footer: data.N.footer,
}), ...
});
问题在于,当我尝试使用north
中定义的函数对signRenderer
对象执行任何操作时,它告诉我north
的所有属性都是{{1 }}
undefined
对象代码使用的简短示例:
SignRenderer
function SignRenderer(options) {
//Class Variables
// ParkingSign Objects
var signs = {
n: options.north,
}
console.log(signs.n.getRestriction()); //undefined
}
对象(简化):
Sign
我认为正在发生的是function Sign (options) {
var restriction = options.restriction;
this.getRestriction = function () {
return restriction;
}
}
函数完成后,success
对象Sign
不再存在,并且因为将对象传递给函数只是传递了引用,所有当我尝试调用north
对象中的函数时,值变为undefined
。我对这个评估是对的吗?
如果是这种情况,有没有一种简洁的方法来解决这个问题?我真的不希望SignRenderer
对象只是作为全局变量而悬空,但如果必须如此,则必须如此。
谢谢你们。
答案 0 :(得分:0)
问题在于Sign对象,而不是SignRenderer。
function Sign (options) {
this.getRestriction = function () {
return options.restriction;
}
}