有一种方法可以知道哪个类拥有一个函数?
例:
例:
function globalFunc(){ //alert MyObject } function MyObject(){ } MyObject.prototype.test=function(){ globalFunc(); } var o=new MyObject(); o.test(); //alert MyObject
现在我使用这个解决方法:
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
但是有一个很大的问题,看看这个:
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
那么,有一个明确的方法来获得这个?
我知道问题在哪里(类属性只是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
为了使用继承,$(),我需要知道什么类调用它和类的对象.
一切都很好,但如果我需要访问clousure中的私人成员,我必须添加
__类__
物业到clouser !!我不想要这个!
再次感谢,抱歉我的英语不好,我不是母语.
解决方法
在javascript中没有类.相反,几个对象可以“拥有”相同的功能.例如:
function myFun(){ alert(this.name); } function Obj1(){ this.name = "obj1"; } Obj1.prototype.fun = myFun; function Obj2(){ this.name = "obj2"; } Obj2.prototype.fun = myFun; var obj1 = new Obj1(); var obj2 = new Obj2(); obj1.fun(); obj2.fun();