0

我需要一个只为给定对象工作的函数。我不确定它是否可能,但我尝试了类似的方法:

var a = {
    b: function(a) {
        return display(a)
    }
}
a.prototype.display = function(a) {
    return a;
}
alert(a.b('Hi'))​//This is suppose to work
alert(display(a))//This isn't suppose to work

这不起作用,但不知道为什么。我对原型有点陌生。例如,我将它与 String.prototype 一起使用,但我仍然需要学习所有其他内容。谢谢您的帮助。

4

1 回答 1

0

您需要在对象中使用私有方法。在 javascript 中实现这一点的唯一方法是将函数保持在闭包中并在当前对象的上下文中执行它。

var a = (function () {
      var display = function (a) {
          return a;
      };

      return {
         b : function(a) {
             // display exist in closure scope of b;
             //executing display in the context of current object
             return display.apply(this, arguments);
         }
      };
})();

display外面无法到达这里。

alert(a.b("hi")); //will return hi

a.display("hi");不可访问。

于 2012-07-29T04:43:34.190 回答