在objectscope中获取对象名称

时间:2009-08-21 14:09:57

标签: javascript

我有一个包含

的Javascript类

添加 去掉 移除所有 更新 。 。 。 updateLik 。

功能

在我的Serverside脚本中,有一个像

这样的链接 加

现在,如果用户点击DIV,将调用“添加”功能。 add函数又调用updateLink函数。

updateLink将onclick属性替换为“myobject.delete(100)”

现在我的问题是在updateLink函数中我必须硬编码对象名 调用它的删除功能。

有没有办法获取对象名或任何其他解决方案? 感谢

4 个答案:

答案 0 :(得分:2)

您可以存储创建对象的上下文的引用,然后在其中搜索,查找实际的实例:

function MyClass() {
  this.getVarName = function () { 
    for (var name in this.scope) 
      if (this.scope[name] === this) 
        return name;
  } 
}

MyClass.prototype.scope = this;

var myObject = new MyClass();
myObject.getVarName(); // returns "myObject"

答案 1 :(得分:0)

最简单的方法是使用eval。

var myObject = eval(myObjectName);

即如果你有一个字符串格式的对象名称。

我还会看一下YUI事件库。它允许您在任何范围内执行任何功能。

http://developer.yahoo.com/yui/event/

答案 2 :(得分:0)

示例:

var x = new YourClass();
var y = x;

问题:您的对象名称是什么? xy

解决方案:

var x = new YourClass('x'); // and have your class copy the name

var x = new YourClass();
x.name = 'x';

答案 3 :(得分:0)

delete是一个关键字,因此您不能将其与点符号(object.method)一起使用。你必须使用['property'] - 符号(object ['method'])。

var obj = {delete: function(){}}; // throws a syntax error
var obj = {'delete': function(){}}; // works

obj.delete() // throws a syntax error
obj['delete']() // works