Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在对象实例中使用构造函数的私有方法_Javascript_Constructor - Fatal编程技术网

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

Javascript 如何在对象实例中使用构造函数的私有方法,javascript,constructor,Javascript,Constructor,我已经做了一个构造函数。我现在正在向它添加属性和方法。现在,我还添加了一个名为ceta()的私有函数。之后,我从构造函数中创建了一个实例(obj1),如何使用私有函数来创建对象实例(而不是使用call、apply、bind) 函数alpha(){ 这个a=10; 这个b=20; this.beta=函数(){ 这个c=30; 警报(c); } var ceta=函数(){ 警惕(“嗨!”); } } var obj1=新α; obj1.beta();//这很有效 obj1.ceta();//

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


函数alpha(){
这个a=10;
这个b=20;
this.beta=函数(){
这个c=30;
警报(c);
}
var ceta=函数(){
警惕(“嗨!”);
}
}
var obj1=新α;
obj1.beta();//这很有效
obj1.ceta();//这不是

ceta
在构造函数函数
alpha
的范围内,但不属于正在构造的对象。它可以在闭包中使用,也可以在闭包下使用,并从
这个.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
函数alpha(){
这个a=10;
这个b=20;
this.beta=函数(){

ceta();//私有方法不能在对象外部使用,这就是它们私有的原因。如果要使其公开,请将其分配给属性。
this.ceta=ceta;
JavaScript没有“私有方法”或“私有属性”,所有属性和方法都是公共的。@Barmar说的。不是字面上的私有和公共访问修饰符,而是函数作用域的工作方式使它们私有或公开。