javascript中对象的“隐藏”功能

时间:2016-04-04 08:51:04

标签: javascript

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

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中实现此目的的更好方法吗?

1 个答案:

答案 0 :(得分:0)

当您记录对象时,使用原型创建的函数也是可见的。在此上下文中,您唯一可以做的就是使用this在构造函数中创建函数并创建closure。与原型函数不同,这些函数不是对象实例中的共享函数。我的意思是,函数的更改不会反映在所有对象实例中。

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