使用私有属性创建的类

Jos*_*man 6 javascript oop

我正在研究一个用javascript创建类的实用程序.它的工作原理,问题是如何定义私有属性.

这是代码

var OO = {

    Class:function(){

        var len = arguments.length;
        var data = arguments[len-1];



        var Klass;
        if (data.constructor === Object){
            Klass = function (){};

        } else {
            Klass = data.constructor;
            delete data.constructor;                
        }



        OO.extend(Klass.prototype,data); //Classic Extend Method


        return Klass;


    },
//Simple extend method, just what I need in this case
    extend: function(target, source){
            var prop;
            for (prop in source)
                target[prop] = source [prop];

    }
}
Run Code Online (Sandbox Code Playgroud)

这是它的工作原理

// first create a class
var person = OO.Class ({
constructor: function (name, age) {
this.name = name;
this.age = age;
},

name:'',
age:'',

getName: function () {
return this.name;
},

getAge: function () {
return this.age;
}

});
Run Code Online (Sandbox Code Playgroud)

这是实例

var one = new Person ('josh', 22);
Run Code Online (Sandbox Code Playgroud)

而问题是:

one.age / / returns 22
one.name / / returns josh
Run Code Online (Sandbox Code Playgroud)

我需要的是这些属性只能通过getName()和getAge()等方法访问

EDIT1:添加了扩展功能

小智 0

更新1:

这是工作原型。它有效,除了

1.) 将构造值传递给私人成员。

 Dummy values do work however.
Run Code Online (Sandbox Code Playgroud)

测试一下小提琴:

http://jsfiddle.net/UWRHP/11/