簡體   English   中英

復制和更改javascript函數范圍

[英]Copy and change javascript function scope

有什么方法可以將JavaScript函數作用域復制到另一個函數?

(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();
(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();

如果要訪問一個預先存在的變量或類似變量,可以在初始閉包內提供一個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();

對於更多計划中的事情,最好重新考慮如何使用對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM