Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建“一个”的最佳方法;“实例”;在JS中_Javascript_Oop - Fatal编程技术网

Javascript 创建“一个”的最佳方法;“实例”;在JS中

Javascript 创建“一个”的最佳方法;“实例”;在JS中,javascript,oop,Javascript,Oop,最近,在一些js游戏制作博客和网站上,我看到了一个创建某种“实例”的新约定。看起来是这样的: var newCharacter = function (x, y) { return { x: x, y: y, width: 50, height: 50, update: function () { //do update stuff here } }; };

最近,在一些js游戏制作博客和网站上,我看到了一个创建某种“实例”的新约定。看起来是这样的:

var newCharacter = function (x, y) {
    return {
        x: x,
        y: y,

        width: 50,
        height: 50,

        update: function () {
            //do update stuff here
        }
    };
};

var myCharacter = newCharacter(20, 30); //create "instance"
与传统方式相反:

 var Character = function (x, y) {
    this.x = x;
    this.y = y;

    this.width = 50;
    this.height = 50;

    this.update = function () {
        //do update stuff here
    };
};

var myCharacter = new Character(20, 30); //create intance

我很好奇使用第一种方法的好处是什么。它是更高效、更语义,还是更快?

如果我没有弄错的话,第二节中的“new”在堆上为实例分配空间,这与第一节中没有分配其他空间相反,因此我想知道第一节应该只用于静态类还是单实例类?不要想当然,我也在问自己,这两种语言之间的区别是什么?这两种语言大致相同,或者在速度方面差异非常小,传统的方式更常见,因为更接近其他语言,因此我建议。如果你想提高效率,你也可以使用原型。我不推荐第一种方法,新的
操作符存在是有原因的。第一种方式可能会遇到继承问题。您有时间谈谈原型继承吗正如斯宾塞所说,我强烈建议使用原型遗传。这样,每个实例上只有属性和对原型上方法的引用,这意味着更少的内存使用。您可以在此处阅读: