如何在对象实例中使用构造函数的私有方法

时间:2018-04-19 07:03:30

标签: javascript constructor

我做了一个构造函数。我现在正在添加属性和方法。现在,我还添加了一个名为ceta()的私有函数。之后,我从构造函数中创建一个实例(obj1),如何使用私有函数来对象实例(不是,使用call,apply,bind)。

<html>
<head></head>
<body>

<script>

function alpha(){
  this.a = 10;
  this.b = 20;
  this.beta = function(){
    this.c = 30; 
    alert (c);
  }
  var ceta = function(){
    alert ("hi!");
  }
}

var obj1 = new alpha;

obj1.beta();// this works
obj1.ceta();// this not 

</script>

</body>
</html>

1 个答案:

答案 0 :(得分:2)

ceta在构造函数alpha的范围内,但属于正在构造的对象。它可以在关闭时使用或在关闭时使用this.beta函数返回。如;

function alpha(){
  this.a = 10;
  this.b = 20;
  this.beta = function(){
    ceta(); // <<-- invoke here for some purpose
    this.c = 30; 
    alert(this.c);
    return ceta; // <<-- or return here
  }
  var ceta = function(){
    alert ("hi!");
  }
}

var obj  = new alpha(),
    ceta = obj.beta(); // alerts twice and obj.c is set to 30

但这些都是无用的做法。 ceta的主要任务应该是提供实用程序服务来帮助构造函数构造对象。

如果您需要从ceta的所有实例访问alpha,请将其放入alpha的原型中。