2

有没有办法将 JavaScript 函数 Scope 复制到另一个函数?

(function(v){
     var Ct=v.Ct=function(){
     }
     var a="asdf";

     Ct.prototype.fun=function(){
          console.log(a);    //prints 'asdf'
     }
})(window)

--------------------------------------------------

上面的代码不能改:

如何重写 Ct.prototype.fun 以使其打印“asdfasdf”

下面的例子不能得到“a”

Ct.prototype.fun=function(){
    console.log(a+a);   //It's not work
}

var o=new Ct();
o.fun();
4

2 回答 2

0
(function(v){
 var Ct=v.Ct=function(){
 };
 var a="asdf";

 Ct.prototype.fun=(function(){
    return function(){
      console.log(a+a);    //prints 'asdf' 
 }
 })(a);
})(window);
var o=new Ct();
o.fun();
于 2013-01-10T03:41:18.327 回答
0

如果您想要访问一个预先存在的变量或类似的东西,您可以在初始闭包中提供一个 getter,然后通过上下文访问它。

(function(v){
     var Ct=v.Ct=function(){
     }
     var a="asdf";

     Ct.prototype.fun=function(){
          console.log(a);    //prints 'asdf'
     }
     Ct.prototype.getA = function() {
        return a; 
     }
})(window)

Ct.prototype.fun=function(){
    console.log(this.getA()+this.getA());
}

var o=new Ct();
o.fun();

对于更多计划,您最好重新考虑如何使用对象。

于 2013-01-10T03:45:13.390 回答