繁体   English   中英

对象属性返回为未定义(JavaScript)

[英]Object property returns as undefined (JavaScript)

在一个JavaScript项目上工作。 我知道,这有点复杂,但是我正在尝试通过查询Object1中的关联属性来验证和处理Object2中的信息(如果有意义)...

Object1 = function() {
    this._list = [];
};
Object1.prototype.method1 = function(param) {
     if (param == "foo") { this.method2("foo"); }
};
Object1.prototype.method2 = function(param) {
    for (var i = 0; i < this._list.length; i++) {
        if (this._list[i]._name == param) {
            console.log(this._list[i]._name); // outputs "foo"
            return this._list[i]._name // **TypeError: value is undefined**
        }
    }
};

Object2 = function(name) {
    this._name = name || "foo";
}

var object = new Object1();
var foo = new Object2("foo");
object._list.push(foo);
object.method1("foo");

我知道这有点令人费解。 我的问题是,它返回“ param._name”,并给出TypeError。 但是,在上一行中,当我将其发送到控制台时,结果很好。

我承认我对JavaScript有点陌生,甚至对OOP还是陌生的,因此,如果这是一个愚蠢或荒谬的问题,请对我轻松一点!

有任何想法吗? 所有的想法和建议表示赞赏。

谢谢

我在代码中做了相同的更正,请尝试:

Object1 = function() {
    this._list = [];
};
Object1.prototype.method1 = function(param) {
     if (param == "foo") { this.method2("foo"); }
};
Object1.prototype.method2 = function(param) {
    for (var i = 0; i < this._list.length; i++) {
        var item = this._list[i];
        if (item._name == param) {
            console.log(item._name); 
            return item._name;
        }
    }
};

Object2 = function(name) {
    this._name = name || "foo";
}

var object = new Object1();
var foo = new Object2("foo");
object._list.push(foo);
object.method1("foo");

Object1 Method1应该看起来像这样:

Object1.prototype.method1 = function(param) {
    if (param == "foo") { return this.method2("foo"); }
};

注意那里的收益 感谢所有尝试回答的人以及您的帮助。 这篇文章从一开始就是一场沉船事故-我自己的错-我为此表示歉意,但是我非常感谢您的帮助和帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM