Javascript找到原型链的开头

时间:2010-02-06 00:11:42

标签: javascript prototypal-inheritance

如果我将一个函数设置为Object.prototype,并尝试从对象Foo调用该函数,那么函数是否有办法知道最初调用它的对象是什么?

Object.prototype.MyFunc = function () {
    console.log("I was called by " + (//object name here...));
}

Foo = {};
Foo.MyFunc();

谢谢!

2 个答案:

答案 0 :(得分:1)

AFAIK这是不可能的,因为对象是对象,多个变量可以引用同一个对象,除非明确地完成,否则不会在对象上存储变量名。

您当然可以使用this来引用手头的对象,但除非您做了类似的事情,否则无法获取变量。

Object.prototype.alertName = function() {
    alert( this.name )
}

var names = [
  {name:'John'}
];

names[0].alertName()

答案 1 :(得分:0)

据我所知,无法获得实际的对象名称(即var名称)。

但是,您可以使用this来引用调用该函数的对象。

Object.prototype.MyFunc = function() {
 this.foo = 'bar';
}

MyObject = {};
MyObject.MyFunc();
MyObject; // Object { foo = 'bar' }