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的速度会慢得多测试是有缺陷的,你不仅仅是在访问一个属性,你在调用一个方法,这两个非原型方法的开销要大得多,因为它们必须维护闭包和更复杂的范围链。但它们也有原型示例中不可用的特性,除非你有特定的测试,否则这些特性最重要其他的。看起来像是一些优秀的阅读,虽然我没有看到任何关于评估每一个性能的东西跳出来。谢谢链接