如何在JavaScript中使用LinkedIn登录API保持类范围?
我正在制作一个快速LinkedIn登录插件,但我不知道如何将类的JS范围保留在回调方法中 HTML:如何在JavaScript中使用LinkedIn登录API保持类范围?,javascript,scope,linkedin,Javascript,Scope,Linkedin,我正在制作一个快速LinkedIn登录插件,但我不知道如何将类的JS范围保留在回调方法中 HTML: <script type="IN/Login" data-onAuth="linkedInLogin.linkedInRequest"></script> 问题出在myinit函数中,作用域是类作用域,可以访问方法和属性,但在linkedInRequest中,我的作用域是窗口作用域。我希望它也是类的作用域,因此我可以将其拆分为多个方法。请注意,JavaScript没有类
<script type="IN/Login" data-onAuth="linkedInLogin.linkedInRequest"></script>
问题出在my
init
函数中,作用域是类作用域,可以访问方法和属性,但在linkedInRequest
中,我的作用域是窗口作用域。我希望它也是类的作用域,因此我可以将其拆分为多个方法。请注意,JavaScript没有类!如果你试图装作这样,你只会把自己弄糊涂。此
参数的传递取决于函数的调用方式,而不是函数的定义方式,显然LinkedIn脚本不会传递它。您可以通过使用另一个函数包装它来绕过它,该函数可以根据您的意愿调用它,或者使用该方法
您的linkedInLogin
变量是传递给ready()
的回调的本地变量,对于LinkedIn脚本不可见
您可能希望执行以下操作:
function LinkedInLogin() { }
LinkedInLogin.prototype = {
init : function() {
console.log(this);
},
linkedInRequest : function() {
console.log(this);
IN.API.Profile("me")
.fields(['firstName', 'lastName', 'email-address', 'picture-url'])
.result();
}
};
var ll = new LinkedInLogin(),
linkedInRequest = ll.linkedInRequest.bind(ll);
$(document).ready(function() {
ll.init();
});
…然后简单地
<script type="IN/Login" data-onAuth="linkedInRequest"></script>
…然后:
<script type="IN/Login" data-onAuth="LinkedInLogin.linkedInRequest"></script>
var LinkedInLogin = {
init: function() { console.log(this); },
linkedInRequest: function() {
console.log(this);
IN.API.Profile("me")
.fields(['firstName', 'lastName', 'email-address', 'picture-url'])
.result();
}
};
LinkedInLogin.linkedInRequest
= LinkedInLogin.linkedInRequest.bind(LinkedInLogin);
$(document).ready(function() { LinkedInLogin.init(); });
<script type="IN/Login" data-onAuth="LinkedInLogin.linkedInRequest"></script>