如何实现python';javascript中的s namedtuple

如何实现python';javascript中的s namedtuple,javascript,python,namedtuple,Javascript,Python,Namedtuple,如何在javascript中实现python的namedtuple?理想情况下,我还需要一个可以“映射”一系列序列的函数,以将其转换为一系列命名的类耦合对象 // with underscore.js included... var points = [[1,2], [3,4], [4,5] var Point = namedlist('Point', 'x y') points = _.map(Point._make, points) point1 = points[0] var x = p

如何在javascript中实现python的namedtuple?理想情况下,我还需要一个可以“映射”一系列序列的函数,以将其转换为一系列命名的类耦合对象

// with underscore.js included...
var points = [[1,2], [3,4], [4,5]
var Point = namedlist('Point', 'x y')
points = _.map(Point._make, points)

point1 = points[0]
var x = point1.x
var y = point1.y
请注意,我不想每次都编写一个像“Point”这样的新类,而是希望使用一个工厂函数生成一个新类,该类支持使用给定字段名访问列表项


旁注:这个问题背后的一个假设是javascript映射使用的内存比列出的内存少。这个假设合理吗?

你可以用类似的方法

var namedlist = function(fields) {
    return function(arr) {
        var obj = { };

        for(var i = 0; i < arr.length; i++) {
            obj[fields[i]] = arr[i];            
        }

        return obj;
    };
};

//use:
var points = [[1,2], [3,4], [5,6]];
var Point = namedlist(['x', 'y']);

points = _.map(Point, points);

//Single item:
var pt = Point([1,2]);
var namedlist=函数(字段){
返回函数(arr){
var obj={};
对于(变量i=0;i
至于内存使用,这取决于底层JS引擎如何实现每个构造。我怀疑数组比对象消耗更少的内存,但是简单对象(如这里)和数组之间的区别可能不是很明显