【问题标题】:"Hidden" function on object in javascript [duplicate]javascript中对象上的“隐藏”功能[重复]
【发布时间】:2016-07-23 17:33:07
【问题描述】:

我希望函数在对象上可用,但如果我控制台记录它或将其发送到另一个函数,我不会看到它。

var obj = function() {
  this.name = 'Bob';
  this.age = 23;
}
obj.prototype.say = function() {
  console.log(this.name, this.age, 'thats me..');
}

var pers = new obj();
console.log(pers); // { name: 'Bob', age: 23 } 
pers.say(); // Bob 23 thats me..

这对解决方案和良好做法有好处吗?还是在 javascript 中实现这一点的更好方法?

【问题讨论】:

  • 我认为这不会使它不可见。如果您使用的是 chrome,只需单击“原型”标签

标签: javascript


【解决方案1】:

使用原型创建的函数在您记录对象时也是可见的。在这种情况下,您唯一能做的就是使用this 在构造函数中创建函数并创建closure。与原型函数不同,这些函数不会是对象实例之间的共享函数。我的意思是,函数的变化不会反映在所有的对象实例中。

var obj = function() {
  this.name = 'Bob';
  this.age = 23;
  function privateTest(){ alert("hai"); }
  this.test = privateTest;
}

【讨论】:

  • @NinaScholz 但是 privateTest 将不可见。这就是重点。
  • 当我记录您的解决方案时(如果有问题,我正在运行节点)我得到:{ name: 'Bob', age: 23, test: [Function: privateTest] }
  • @user3688556 没关系。但是您将无法控制privateTest
猜你喜欢
  • 2012-12-11
  • 1970-01-01
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多