是否可以在javascript中限制继承?我在互联网上搜索了javascript中对继承的限制,但没有找到任何有用的信息。有人可以解释这个继承限制的话题吗?我想限制我的单例对象在其他对象中的继承属性。
答案 0 :(得分:1)
您不能在javascript中限制继承。如果您有一个初始化对象的公共构造函数,则任何其他对象都可以使用它来创建派生对象。
您可以使用某些声明方法将许多实例变量甚至方法设为私有(请参阅here以供参考),这可能会降低派生对象的实用性或功能,但仍然无法阻止它。 / p>
也许如果你解释一下你正在努力解决的问题,我们可以就如何解决它提出更具体的想法。
好了,既然你已经解释过你只想要一个单身人士,那么我建议你使用这样的单身设计模式:
var Singleton = (function () {
var instance;
function createInstance() {
var object = new Object("I am the instance");
return object;
}
return {
getInstance: function () {
if (!instance) {
instance = createInstance();
}
return instance;
}
};
})();
构造函数是私有的(包含在闭包中),因此它不能被其他代码调用,获取对象的方法是只返回单个实例的函数。当然,JS中对象的任何属性/方法都可以被复制,但像这样的单例可以将实例数据保存在闭包中,如果它想要它无法复制的地方。
参考文献:
Learning Javascript Design Patterns - The Singleton Pattern