【问题标题】:Merging nested classes and keeping values合并嵌套类并保留值
【发布时间】:2013-01-30 22:32:29
【问题描述】:

我想将alpha.helper 类中的一个对象扩展为Helper 类的一个实例,但每次调用alpha.helper 函数时都很难设置它,因为我需要传输当前值alpha.imperfect.

var _ = require("underscore");

var Helper = function(imperfect){

    var helper = {};

    helper.use = function(item){
        console.log(item);
        console.log(imperfect);
        return false;
    }

    helper.bar = function(item){
        console.log(item);
        console.log(imperfect);
        return false;
    }

    return helper;

}

var Alpha = function(){

    var alpha = {};

    alpha.imperfect = {}    

    alpha.add = function(item){
        _.extend(alpha.imperfect, item);
    }

    alpha.helper = function(){
        var helper = new Helper(alpha.imperfect);
        return helper;
    };

    return alpha;

}

var alpha = new Alpha();

alpha.add({"name":"thomas"});

alpha.add({"something":"seven"});

alpha.helper.use("foo");

【问题讨论】:

  • 当你的函数只返回对象时,没有理由使用new关键字。
  • @Bergi 谢谢,不知道。

标签: javascript class object nested


【解决方案1】:

随便用

alpha.helper = new Helper(alpha.imperfect);

每次调用 alpha.helper 函数时都很难设置它,因为我需要传输 alpha.imperfect 的当前值。

没有。 helper 始终可以访问当前的 imperfect 值,因为它仍然引用同一个对象。

【讨论】:

  • 当我调用new Alpha() 时,它运行alpha.helper = new Helper(alpha.imperfect),当前值为alpha.imperfect,即{}。所以这行不通。 =[
  • 为什么不呢?如果该对象被填充,助手将看到填充的对象。你真的试过你的代码吗?
  • 这是有效的,我遇到了另一个破坏它的功能。抱歉误报!感恩节
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 2021-12-23
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-05
相关资源
最近更新 更多