[英]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.