如何使用javascript中同一对象内的公共方法访问私有变量?

拉杰什·库玛(Rajesh Kumar)

我正在尝试通过此链接了解封装

function Test() {
  var prop1 = "one";
  this.prop2 = "two";

  function meth1() {
    console.log("Inside meth1" + prop1);
  }

  this.meth2 = function() {
    console.log(this.prop2 + "................, " + meth1());
  };

  this.meth4 = function(val) {

    prop1 = val;

    console.log("inside meth4" + prop1);
  }
}

var tc = new Test();
var result1 = tc.meth2();
var result3 = tc.prop1;

根据meth1()访问的链接this.meth2应该有效,但令我惊讶的是我没有定义。

您能否说明一下这里发生的事情。我正在为此使用IE 9

LOG: Inside meth1one 
LOG: two................, undefined 
拉杰什

除了@Michael的答案外,当您尝试将函数作为类时,请记住要返回值。此值将公开可用。在类结构中,var result3 = tc.prop1;应返回undefined访问它的唯一方法应该是功能。以下是代表

function Test() {
  
  // To hold context as object inside functions
  var self = this;
  self.prop1 = "one";
  self.prop2 = "two";

  // method to access prop1
  function meth1() {
    return self.prop1;
  }

  // method to access prop2
  function meth2() {
    return self.prop2;
  };
  
  // Properties that will be publically available.
  // Never add private variables here.
  return{
    "meth1":meth1,
    "meth2":meth2
  }
}

var tc = new Test();
var result1 = tc.meth1(); // Should be "one"
var result2 = tc.prop1;   // Should be "undefined". Private property
var result3 = tc.meth2(); // Should be "two"

console.log(result1,result2,result3)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以从同一对象javascript中调用私有函数吗

访问同一对象函数中的变量

如何缩短对JavaScript中同一对象的多个属性的访问?

访问同一对象中的对象属性

如何访问在公共方法中声明的变量以便在私有方法中使用它

Java中同一对象内的对象列表

访问同一对象文字中的属性

有没有办法从同一对象的方法中创建对象属性?

使公共成员变量访问C ++中同一类的私有成员

Perl:通过类中的同一对象访问方法和json hashref数据

如何检查两个变量是否在Python中引用了同一对象?

如何检查两个变量是否指向内存中的同一对象?

从Javascript的同一对象中使用setTimeout函数调用对象方法

如何从对象,JavaScript中同一对象的其他函数的内部调用函数?

我如何序列化对象在Java中,同一对象里面的方法?

如何模拟更新同一对象的函数/方法?

如何修补同一对象的多种方法

add()方法继续在ArrayList中的所有索引处写入同一对象

同一对象的链接方法

如何在Java中的不同类中使用同一对象

Django中使用一对多关系的同一对象内的多值属性

JavaScript + discord.js:如何在存储在同一对象中的另一个对象中使用对象的属性?

从同一对象内部访问对象内部的数组

如何将对象中的属性分配给javascript中同一对象中某个属性的值?

如何在没有多个实例变量引用同一对象的情况下实现继承?

如何从JavaScript中的私有函数访问公共函数

多线程访问同一对象上的同步方法和非同步方法

Python:复制变量或使变量中的两个指向同一对象之间的区别

如何将新的键值对添加到NSMutable数组内的同一对象中