代码之家  ›  专栏  ›  技术社区  ›  Hristo

如何使用定义的变量和函数创建JavaScript对象?

  •  0
  • Hristo  · 技术社区  · 14 年前

    假设我想创建一个名为“顶点”的对象。通常,在Java中,我会通过:

    public class Vertex {
    
       // member variables
       public data;
       private id;
    
       // member methods
       public Vertex() { /* default constructor */ }
       public getID() { return id; }
    }
    

    /**
     * Vertex constructor.
     */
    function Vertex(object) {
    
        data = object;
        id = object.getCode(); // each Vertex will have a unique id which will be the city code
    };
    Vertex.prototype = (function() {
      // Private Members here
    
      // Public Members inside return
      return {
        constructor : Vertex,
    
        getID : function() {
    
            return (id);
        }
    };
    

    我对原型一点也不熟悉,但我在努力学习。这样做对吗?如果不是,我基本上是在尝试完成上面的Java代码所做的事情,但是要用JavaScript来完成。

    3 回复  |  直到 10 年前
        1
  •  4
  •   David Titarenco    14 年前

    http://robertnyman.com/2008/10/14/javascript-how-to-get-private-privileged-public-and-static-members-properties-and-methods/ 解释得非常详细。对你来说。。。

    // Constructor
    function Vertex (data) {
        // Private
        var id = 1;
    
        // Privileged
        this.getID= function () {
            return id;
        };
    
        // Public
        this.data = data;
    }
    
    // Public
    Vertex.prototype.getData = function () {
        return this.data;
    };
    
    // Static property
    Vertex.static = "something";
    
        2
  •  2
  •   Community Reversed Engineer    7 年前

    从JavaScript奇怪的原型实现中,有很多方法可以使类/实例系统与您在其他语言中使用的类似。没有一种被大家接受的方式,为了方便和性能,有很多可能的折衷方案。见 this question

    可以

    Java需要将私有成员作为其安全模型的一部分来实施。但是JavaScript没有页面内安全边界的模型,所以除了您自己,您不会保护您的代码不被任何人滥用。所有真正的私人将为您做的是使快速调试和原型工作有点困难。

        3
  •  0
  •   Jan    14 年前

    可以使用JSDoc向变量和函数添加元信息(如私有成员资格)。像这样的工具 Google closure