首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复制和更改javascript函数作用域

复制和更改javascript函数作用域
EN

Stack Overflow用户
提问于 2013-01-10 11:18:32
回答 2查看 500关注 0票数 2

有没有办法将一个JavaScript函数作用域复制到另一个函数?

代码语言: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“

代码语言:javascript
复制
Ct.prototype.fun=function(){
    console.log(a+a);   //It's not work
}

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

回答 2

Stack Overflow用户

发布于 2013-01-10 11:41:18

代码语言:javascript
复制
(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();
票数 0
EN

Stack Overflow用户

发布于 2013-01-10 11:45:13

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

代码语言:javascript
复制
(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();

对于任何更有计划的事情,你最好重新思考一下你是如何使用对象的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14250309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档