我很确定我做错了什么,但仍然有办法根据窗口大小设置值吗?
以下是示例代码:
var setNewValue;
$(window).resize(function() {
if($(window).width() < 768) {
setNewValue = "less";
} else {
setNewValue = "more";
}
});
var createObject = function(property) {
this.property = property;
this.showProperty = function() {
document.write(this.property);
};
};
var example = new createObject(setNewValue);
example.showProperty();
// undefined
答案 0 :(得分:0)
var createObject = function(property) {
return {
property: property,
getProperty: function() {
return this.property;
}
};
};
var example = createObject();
$(window).resize(function() {
example.property = $(window).width() < 768 ? "less" : "more";
document.write(example.getProperty());
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:0)
看起来你有竞争条件。当脚本运行时,发生的是:
setNewValue
变量已定义(目前该值为undefined
)createObject()
值调用setNewValue
,该值仍为undefined
除非在步骤2和3之间没有触发调整大小事件,否则在调用setNewValue = undefined
时,您始终会以createObject()
结束。
我不确定这里的大图是什么,因为您只发布了一段代码,但是您需要确保setNewValue
变量已经设置好了访问它 - 例如通过在脚本开头的某处显式设置它。