函数中的变量在顶部悬挂,但在代码顶部没有悬挂;
function myFunc(){
//..
}
var m1 = new myFunc();
console.log(m1.test);//logs undefined
myFunc.prototype.test = 'testing';
console.log(m1.test);//now logs testing
问题:有没有办法让原型在顶部提升,以便首先登录上面的代码会记录'测试'而不是undefined?
答案 0 :(得分:0)
如果你真的有这样的要求,你可以做到
function log(obj, attr) {
setTimeout(function() {
console.log(obj[key]);
}, 0);
}
function myFunc(){
//..
}
var m1 = new myFunc();
log(m1, 'testing'); // now logs testing
myFunc.prototype.test = 'testing';
log(m1, 'testing'); // now logs testing
答案 1 :(得分:0)
我遇到了这个问题(在我的情况下,想要提升一个在调用之后定义的原型函数),这就是我做的:
var m1 = new myFunc();
console.log(m1.test); // 'testing'
/////////////////////////////////
function myFunc () {
myFuncBuilder.prototype.test = 'testing';
myFuncBuilder.prototype.definedLater = definedLater;
return new myFuncBuilder();
}
function myFuncBuilder () {
// ...
}
function definedLater () {
// ...
}
我同意其他人的意见;这可能不是组织代码的好方法。