如何使用javascript获取属性调用函数

How to get property call a function with javascript?

本文关键字:调用 函数 属性 获取 何使用 javascript      更新时间:2023-09-26

我需要知道谁调用了一个函数,例如我有这样的代码:

var observe = function(newvalue, callback) {
      console.log('who call me?');
      callback('new value is ' + newvalue);
}
var ViewModel = function() {
  var self = this;
  self.Id = '1';
  self.Name = observe;
  self.NickName = observe;
  self.someFunction = function() {
    return 1 + 2;
  }
}
var vm = new ViewModel();
vm.NickName('test', function(resp) {
  console.log(resp);
})

对于这个例子,在observe中,我需要代码知道谁调用它是vm.NickNameNickName

如何用纯javascript解决这个问题?

在一个函数中,你无法确定用什么引用来调用它。如果你想这样做,你需要创建单独的函数(然后可以调用中心函数),或者给它传递一个参数,告诉它是如何被调用的,等等

例如,这个例子给它传递了一个参数:

var observe = function(who, newvalue, callback) {
      console.log('Called by: ' + who);
      callback('new value is ' + newvalue);
};
// ...
self.Name = observe.bind(self, 'Name');
self.NickName = observe.bind(self, 'NickName');