Javascript 如何在对象实例中使用构造函数的私有方法
我已经做了一个构造函数。我现在正在向它添加属性和方法。现在,我还添加了一个名为ceta()的私有函数。之后,我从构造函数中创建了一个实例(obj1),如何使用私有函数来创建对象实例(而不是使用call、apply、bind)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();//
函数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说的。不是字面上的私有和公共访问修饰符,而是函数作用域的工作方式使它们私有或公开。