有没有办法将一个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();发布于 2013-01-10 11:41:18
(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-10 11:45:13
如果有一个预先存在的变量或类似的东西需要访问,那么可以在初始闭包中提供一个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();对于任何更有计划的事情,你最好重新思考一下你是如何使用对象的。
https://stackoverflow.com/questions/14250309
复制相似问题