对象 属性 returns 未定义 (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");
我知道这有点令人费解。不过我的问题是 returns
'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");
对象 1 方法 1 应该是这样的:
Object1.prototype.method1 = function(param) {
if (param == "foo") { return this.method2("foo"); }
};
注意那里的 return。感谢所有试图回答的人,感谢您的帮助。这 post 从一开始就是一场火车失事 - 我自己的错 - 对此我深表歉意,但我非常感谢你帮助我度过难关的帮助和善意。
从事 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");
我知道这有点令人费解。不过我的问题是 returns '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");
对象 1 方法 1 应该是这样的:
Object1.prototype.method1 = function(param) {
if (param == "foo") { return this.method2("foo"); }
};
注意那里的 return。感谢所有试图回答的人,感谢您的帮助。这 post 从一开始就是一场火车失事 - 我自己的错 - 对此我深表歉意,但我非常感谢你帮助我度过难关的帮助和善意。