JavaScript 对象变量在运行时未定义,但可以访问

标签 javascript backbone.js

在尝试访问确实存在但在运行时不存在的对象变量时,我遇到了 JavaScript 的一些奇怪行为。

以下显示了我尝试访问的对象的启动:

app.examView = new app.ExamView({el: $("#main_wrap"), model: model});

这是定义和对对象创建的调用,我试图在其中访问 app.examView 变量。

app.ExamView = Backbone.View.extend({
    initialize: function(){  
        this.render();  
        this.calculatorView = new app.ExamCalculatorView({el: $("#exam_calculator_container"), model: this.model});   
        this.questionView = new app.ExamQuestionView({el: $("#exam_question"), model: this.model});

在此处记录 examView 变量返回未定义:

var app = app || {};

app.ExamQuestionView = Backbone.View.extend({
    initialize: function(){
        console.log(app.examView);

尽管如此,该对象可以通过控制台访问: Firebug console

任何帮助将不胜感激。

最佳答案

我假设您的 Backbone View 在 DOM 准备好之前就调用了 render() 。您的代码是否包含在 $(document).ready() 中?

“奇怪的行为”是因为该元素在 DOM 完成后才可用。

关于JavaScript 对象变量在运行时未定义,但可以访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23781250/

相关文章:

javascript - 作为构建过程的一部分,从 Node/Express View 渲染静态 HTML 文件

javascript - 如何通过javascript执行php

javascript - fetch() 未调用其成功和错误回调函数 (backbone.js)

javascript - 提交时不会触发主干事件

javascript - 格式化货币正则表达式javascript

javascript - "Possibly undefined value",如何使 null 安全?

javascript - Ionic 2,this.nav.push() 未定义

javascript - 在 RethinkDB eqJoin() 上使用 Pluck/Without

javascript - 在 Backbone View 中填充选择列表数据的常见模式?

javascript - 带有 Backbone + Marionette 但没有 Rails 的 ECO 模板