在Javascript中调用实例的函数

ALB*_*LBI 0 javascript jquery

我正在尝试在具有子视图实例的View函数中创建一个hashmap,我在View的init方法中执行.但是它给出了一个错误,即视图的init()不存在.我在这里做错了吗?提前致谢.

http://jsfiddle.net/3fR4R/1/

view = function() {
    var subview;
    init = function() {
        subview['search'] = new searchSubView();
    }
}

check = function() {
    console.log("clicked");
    var view1= new view();
    view1.init();
}

searchSubView = function() {    
}
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 6

您已经创建了一个函数并将其分配给一个隐式全局函数,该函数与它view创建的函数或实例无关.

您可以通过this.init在构造函数中指定或通过将其置于上面来分配函数view.prototype.

所以要么:

view = function() {
    var subview;

    // Note: You need code here to initialize `subview`

    this.init = function() {
        subview['search'] = new searchSubView();
    };
};
Run Code Online (Sandbox Code Playgroud)

或者(注意我已经建了subview一个房产):

view = function() {
    this.subview = /* ...initialize subview... */;
};
view.prototype.init = function() {
    this.subview['search'] = new searchSubView();
};
Run Code Online (Sandbox Code Playgroud)

附注:

  1. 在该代码中,你正在成为隐形全球恐怖的牺牲品.你需要声明变量.

  2. JavaScript代码中的压倒性约定是将初始大写用于构造函数,例如,View而不是view.

  3. 你也依赖于自动分号插入,我不建议这样做.了解规则并应用它们,尤其是您可以安全地缩小/压缩/压缩代码.