javascrip 异步操作之后返回新对象
function test() {
$.ajax({
url:xxx,
type:'GET',
success:function(data) {
data:data;
function employee(data) {
this.customer = function(){console.log(data)}
}
return new employee(data);
}
})
}
var p = new test()
p.customer()//没有找到employee这个方法 想这样调用需要怎么做?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你这个问题有3个问题
1.异步操作后返回结果
2.return返回的其实是success函数,并不是test
3.var p = new test()
前面两个都是undefined的原因
解决办法:
打完答案,发现答非所问了?
原答案:
看过jQuery源码的可能知道这个东西:
题主问题,其实和下面代码是类似的。
(吐槽一下这个在某些书上没法找到坑)
不论你调用
var newTest = test()
或是var newTest = new test()
结果中,.a .b
都是undefined
。其槽点,就是
return
,存在return
语句,且return 一个对象时
,这个新return
的对象的作用域,会取代之前代码生成的对象。但是如果return
的是数值,字符,就不会有这个坑。使用Promise.resolve(),代码如下: