根据您提供的代码,我做出以下假设:
假设1:
您已将测试初始化为返回某个对象或函数的函数,但未在您的问题中包含该代码。这称为构造函数。我认为它看起来像:
function test(){
//do some work here
return this;
}
//or
var test = function(){
//do some work here
return this;
}
我假设这是因为您能够设置原型的属性而不会引发错误,以上将允许您这样做。
假设2:
我假设您正在尝试使用一些涉及多个测试对象实例的面向对象的解决方案。这个假设是基于您的目标是使用原型继承这一事实,如果您的“测试”函数只有一个版本(这称为单例),这一点就不那么重要了。
基于这些假设,问题在于您没有创建测试对象的实例。以下代码应该可以正常工作(依赖于假设 1);
var testInstance = new test();
testInstance.build();
// wait for AJAX to return and execute success handler
testInstance.property // returns a proper value
如果 build 是你只会做一次的事情,并且你想为测试对象的每个实例做一些事情,那么你可以将它放入构造函数本身:
function test(){
this.build();
return this;
};
var testInstance = new test();
// wait for AJAX to return and execute success handler
testInstance.property // returns a proper value
这是一个完整的测试,setTimeout
用作异步调用
function Test(){
//do anything
return this
};
Test.prototype.getName = function(){
var self = this;
//simulate AJAX with setTimeout
setTimeout(
function(){
self.testName = "Ahmad Jamal";
console.log('name set');
}, 1000);
};
Test.prototype.build = function(){
this.getName();
console.log(this.testName); // this is undefined, as the setTimeout is still waiting
};
var test = new Test();
test.build();
// now wait to see 'name set' in the console
test.testName; // returns "Ahmad Jamal"