【发布时间】:2019-09-27 11:55:19
【问题描述】:
我对我的应用程序使用的原型继承模式有一些疑问。首先看一下我正在使用的模式;
const myObjectProto = (function() {
const proto = Object.create( parentProto );
// private variables
let title = 'Some String';
// private functions
const addEmoticon = function() {
return title + ' ';
}
proto.getTitle = function() {
return addEmoticon();
}
return proto;
})();
当我想使用它时,我会像下面这样使用它:
const firstObject = Object.create( myObjectProto );
const secondObject = Object.create( myObjectProto );
// call a public function
firstObject.getTitle();
secondObject.getTitle();
我的第一个问题是:假设我们从对应的 proto 创建 100 个对象;据我所知title 在他们之间共享。这意味着如果一个函数改变了它,它将为所有创建的对象而改变。我有点担心这种情况下的记忆。我是否在这种模式下使用内存效率?有人可以澄清Object.create 是如何对待title 的吗?
我的第二个问题是关于内存泄漏的;假设我们要将 firstObject 设置为 null;
firstObject = null;
基于我们共享变量的事实,例如title 甚至proto,我认为它什么也没做,而且我有内存泄漏。我对吗?如果这是真的,我该如何解决?
【问题讨论】:
标签: javascript memory-leaks prototypal-inheritance