Javascript - 获取函数的类所有者(方法)

7 javascript methods class object

有一种方法可以知道哪个类拥有一个函数?例:

function globalFunc(){
 //alert MyObject
}

function MyObject(){
}
MyObject.prototype.test=function(){
 globalFunc();
}

var o=new MyObject();
o.test();  //alert MyObject
Run Code Online (Sandbox Code Playgroud)

现在我使用此解决方法:

function globalFunc(){
 alert(globalFunc.caller.__class__);
}

function MyObject(){
}
MyObject.prototype.test=function(){
 globalFunc();
}
MyObject.prototype.test.__class__=MyObject;

var o=new MyObject();
o.test();  //alert MyObject
Run Code Online (Sandbox Code Playgroud)

但是有一个很大的问题,看看这个:

function globalFunc(){
 alert(globalFunc.caller.__class__);
}

function MyObject(){
}
MyObject.prototype.test=function(){
 var temp=function(){
  globalFunc();
 }
 temp(); 
    /* to simulate a simple closure, this may be for example:
     element.addEventListener("click",temp,false);
    */
}
MyObject.prototype.test.__class__=MyObject;

var o=new MyObject();
o.test();  //alert undefined
Run Code Online (Sandbox Code Playgroud)

那么,有一个明确的方法来获得这个?我知道问题在哪里(属性只是test而不是temp的属性),但我也不能将添加到temp.

谢谢.


谢谢你的回复,一些澄清.

我试图与私人成员进行个人框架面向对象.

所以:

globalFunc是一个特殊的函数,我用它来获取"私有"属性,我不能用call方法调用它或传递一些参数,我传递的唯一参数是"this":

例如,$()是全局的

Class({
    public:{
        MyClass:function(){
        },

        setName:function(name) {
            $(this).name=name; //set the private var name
        },
        getName:function(){
            return $(this).name;
        }
    },
    private:{
        name:"UNKNOWN"
    }
})

var o=new MyClass();
o.getName(); // UNKNOWN
o.setName("TEST!!!");
o.getName(); // TEST!!!
o.name; //undefined
$(o).name; //undefined
Run Code Online (Sandbox Code Playgroud)

要使用继承,$(),我需要知道什么类调用它和类的对象.

一切都很好,但如果我需要访问clousure中的私人成员,我必须将__class__ 属性添加 到clouser !! 我不想要这个!

再次感谢,抱歉我的英语不好,我不是母语.

nto*_*end 0

temp是调用者,但它没有属性__class__。您仅为 定义了该值test