javascript - 如何将 JavaScript 构造函数对象作为 IFFI 函数参数访问?

标签 javascript jquery

方法 1:(成功) 我有一个名为 Person 的对象构造函数,在这个对象构造函数中我使用了一个工作正常的 IFFI 函数表达式。在这个函数中,Person 的属性是可访问的!但是,

var Person = function (age) {
  this.age = age;
  this.retiredIn = (function (obj) {
    return 65 - obj.age;
  })(this);
};

var turna = new Person(22);

console.log(turna);
enter image description here

方法2:(我想要这个,不成功)这是我想做的另一种方法,我想像这样从原型(prototype)插入retiredIn函数,在这种情况下this 提到了 window 对象。我如何从那里访问 Person 对象?我尝试过将对象直接传递给 IFFI 但它不起作用。

var Person = function (age) {
  this.age = age;
};

Person.prototype.retiredIn = (function () {
  return 65 - this.age; //how can i access Person Object here
})();
var turna = new Person(22);

console.log(turna);
enter image description here

方法2.1:(我已经尝试过这样)我已经直接通过了Person Contractor,但它不起作用!

var Person = function (age) {
  this.age = age;
};

Person.prototype.retiredIn = (function (obj) {
  return 65 - obj.age; //this is also showing NaN
})(Person);
var turna = new Person(22);

console.log(turna);

这也返回 NaN。 有没有办法像方法2一样进行这个操作?

最佳答案

您可以将该方法改为 getter:

var Person = function (age) {
  this.age = age;
};
Object.defineProperty(Person.prototype, 'retiredIn', {
  enumerable: true,
  get() {
    return 65 - this.age;
  }
});
var turna = new Person(22);

console.log(turna);

关于javascript - 如何将 JavaScript 构造函数对象作为 IFFI 函数参数访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61541518/

相关文章:

javascript - 无法自定义引导文件输入

javascript - jQuery:触发器不会在使用 .load() 加载的元素上触发

javascript - 如何删除基于 svg 的饼图字符切片之间的空间?

javascript - Google Closure Compiler,如何优雅地处理 JSC_INEXISTENT_PROPERTY?

jQuery 追加不起作用

jQuery 使用元素创建 Div

jquery - 背景图像在视差滚动时移出容器

javascript - react native 导航实验和 MapView 手势

javascript - 如何在事件回调中同时使用实时功能和去抖?

javascript - 从不在 DOM 中存储中间程序状态?