Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/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中最快的类/对象访问/实例化是什么_Javascript - Fatal编程技术网

Javascript中最快的类/对象访问/实例化是什么

Javascript中最快的类/对象访问/实例化是什么,javascript,Javascript,在探索构建类的几种不同方法时,我很好奇实例化和访问类的最快方法是什么。根据另一个问题的输入: , 我现在研究三种创建类的方法,并想知道最快创建和访问对象的方法有哪些输入 var DogClass = function DogClass(_age) { this.age=_age; this.setAge = function(num) { this.age=num; }.bind(this); this.getAge = functio

在探索构建类的几种不同方法时,我很好奇实例化和访问类的最快方法是什么。根据另一个问题的输入:

,

我现在研究三种创建类的方法,并想知道最快创建和访问对象的方法有哪些输入

var DogClass = function DogClass(_age) {
    this.age=_age;

    this.setAge = function(num) {
        this.age=num;
    }.bind(this);    

    this.getAge = function() {
        return this.age;
    }.bind(this);    
};

var BirdClass = function BirdClass(_age) {
    var _this=this;
    this.age=_age;

    this.setAge = function(num) {
        _this.age=num;
    };    

    this.getAge = function() {
        return _this.age;
    };    
};

var CatClass = function CatClass(_age) {
    this.age=_age;
};

CatClass.prototype.setAge = function (num) {
    this.age=num;
};
CatClass.prototype.getAge = function () {
    return this.age;
};

function profileCreate() {
    console.log("Creating a million of each");

    var o,i,iterations=1000000;

    console.time('createDog');
    for(i=0;i<iterations;i++) {
        o=new DogClass(4);    
    }
    console.timeEnd('createDog');

    console.time('createCat');
    for(i=0;i<iterations;i++) {
        o=new CatClass(4);    
    }
    console.timeEnd('createCat');

    console.time('createBird');
    for(i=0;i<iterations;i++) {
        o=new BirdClass(4);    
    }
    console.timeEnd('createBird');
}

function profileAccess() {
    console.log("Accessing a million of each");

    var o,i,iterations=1000000;

    console.time('accessDog');
    for(i=0;i<iterations;i++) {
        fido.setAge(5);
    }
    console.timeEnd('accessDog');

    console.time('accessCat');
    for(i=0;i<iterations;i++) {
        fluffy.setAge(6);
    }
    console.timeEnd('accessCat');

    console.time('accessBird');
    for(i=0;i<iterations;i++) {
        tweety.setAge(7);
    }
    console.timeEnd('accessBird');
}
var DogClass=函数DogClass(_年龄){
这个年龄=_年龄;
this.setAge=函数(num){
这个。年龄=num;
}.约束(本);
this.getAge=函数(){
返回这个年龄;
}.约束(本);
};
var BirdClass=函数BirdClass(_年龄){
var_this=这个;
这个年龄=_年龄;
this.setAge=函数(num){
_这个。年龄=num;
};    
this.getAge=函数(){
回到这个年龄;
};    
};
var CatClass=函数CatClass(_年龄){
这个年龄=_年龄;
};
CatClass.prototype.setAge=函数(num){
这个。年龄=num;
};
CatClass.prototype.getAge=函数(){
返回这个年龄;
};
函数profileCreate(){
console.log(“每个创建一百万”);
变量o,i,迭代次数=1000000;
console.time('createDog');

对于(i=0;i < P>有很多设计模式来创建类、对象,每个对象都有它自己的优点和缺点。为了比较它们,请看。

不应该使用性能作为选择模式的主要标准,因为它在整体方案中可能是微不足道的。考虑实际的事情。”RobG-我不同意你的说法。性能可能是我最关心的问题,这条线索是为了理解和评估性能,以便我能够将其与我需要的功能类型进行权衡。我可能需要某些对象性能良好,而其他对象功能强大。初步分析将表明创建CatClas实例s可能比其他两个要快得多(尽管这种分析应该有证据支持),而且创建DogClass的速度会慢得多测试是有缺陷的,你不仅仅是在访问一个属性,你在调用一个方法,这两个非原型方法的开销要大得多,因为它们必须维护闭包和更复杂的范围链。但它们也有原型示例中不可用的特性,除非你有特定的测试,否则这些特性最重要其他的。看起来像是一些优秀的阅读,虽然我没有看到任何关于评估每一个性能的东西跳出来。谢谢链接