使用return vs this的优点

喘气

这是一个看起来很熟悉的简单类。

var Cat = function () {
    this.speak = function() {
        return "meow";
    };
};

但是,我经常看到这样写

var Dog = function() {
    var api = {};
    api.speak = function() {
        return "bark";
    };
    return api;
};

它们都被实例化并以相同的方式使用。

var garfield = new Cat();
console.log(garfield.speak());

var odie = new Dog();
console.log(odie.speak());

那么,使用Dog方法的好处是什么?

查尔拉卡(Tschallacka)

没有什么。在两种情况下,您都以错误的方式进行操作。

现在发生的事情是,每当实例化一个对象时,都会添加一个变量Object,并使用其自己的方法来实例化每个对象。

用狗的方式将对象内的功能对象添加到变量。甚至需要更多的内存。

做到这一点的最佳方法如下,以确保所有Dog都具有相同的语音功能,从而减少了内存消耗

function Dog(bark) {
    this.bark = bark;
}
Dog.prototype.speak = function() {
   console.log(this.bark);
}

var odie = new Dog("yip yip");
var bully = new Dog("WOOF!");
odie.speak();
bully.speak();

这样,语音功能只占用两只狗的一块内存。两者都使用完全相同的功能说话。在您的记忆中,您现在拥有:

  • odie(狗)
  • 恶霸(狗)
  • 说话(功能)

在您的示例中,两只狗都会

  • odie(狗)
  • 恶霸(狗)
  • odie.speak(功能)
  • bully.speak(功能)

两只狗的记忆力问题可能会被忽略。但是,如果您有10.000条狗,这将成为一个问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用nServiceBus SendOnly的优点

来自分类Dev

将Navigation Drawer与带有Activities的VS带片段一起使用的优点是什么?

来自分类Dev

nsobject vs nsmanagedobject优点和缺点

来自分类Dev

ntpd vs ntpdate:优点和缺点

来自分类Dev

jQuery vs PHP优点/缺点包括文件

来自分类Dev

ntpd vs ntpdate:优点和缺点

来自分类Dev

在Python中使用MethodType的优点

来自分类Dev

通过Facebook Proguard vs Redex-优点和缺点

来自分类Dev

Strongnode vs Nodejs-Strongnode的优点是什么?

来自分类Dev

Java:setCellValuefactory; Lambda vs.PropertyValueFactory; 优点缺点

来自分类Dev

VS 2013中浏览器链接的优点与缺点

来自分类Dev

在函数中使用let over var的优点

来自分类Dev

使用React-Bootstrap而不是Bootstrap的优点

来自分类Dev

使用优点宝石的可观察徽章事件

来自分类Dev

使用屏幕阅读器文本的优点

来自分类Dev

使用`ng-include src`的优点

来自分类Dev

使用with()和调用向量有什么优点?

来自分类Dev

使用fstat()与stat()有什么优点?

来自分类Dev

使用LESS变量的优点是什么

来自分类Dev

使用fputcsv的优点/缺点是什么?

来自分类Dev

在函数中使用let over var的优点

来自分类Dev

使用或不使用position:static;的优点是什么?在CSS?

来自分类Dev

在CSS中使用flex样式的主要优点是什么?

来自分类Dev

您可以结合使用inProc和Session State的优点吗?

来自分类Dev

Rails 4:使用优点宝石创建点规则

来自分类Dev

不使用原型链并返回对象的优点/缺点

来自分类Dev

使用HTML代码与特殊字符的优点和缺点

来自分类Dev

使用new时,优点是将指针转换为void *

来自分类Dev

使用多个扫描仪的优点是什么?

Related 相关文章

热门标签

归档