在代码顶部提升原型

时间:2014-02-28 03:25:13

标签: javascript

函数中的变量在顶部悬挂,但在代码顶部没有悬挂;

function myFunc(){
//..
}
var m1 = new myFunc();
console.log(m1.test);//logs undefined
myFunc.prototype.test = 'testing';
console.log(m1.test);//now logs testing

问题:有没有办法让原型在顶部提升,以便首先登录上面的代码会记录'测试'而不是undefined?

2 个答案:

答案 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 () {
  // ...
}

我同意其他人的意见;这可能不是组织代码的好方法。