【发布时间】:2014-02-12 22:05:36
【问题描述】:
这是我想要的一个简单示例:
var ConstBuilder = function() {
var constructor = function() {} ;
constructor.prototype = {} ;
return constructor ;
} ;
ConstBuilder.prototype = {
add : function(name, value) {
this.prototype[name] = value ;
}
} ;
var A = new ConstBuilder() ;
A.add('test', function() {
console.log('test') ;
}) ;
var a = new A() ;
a.test() ;
此代码将失败,因为 A 不是 ConstBuilder 的实例(因为 A 来自返回的 var constructor = function() {} 并且不会在其原型 (add) 中定义方法。
但这对于将超级构造函数的原型修改为具有以下内容很有用:
ConstBuilder.prototype.remove = function(name) {
delete this.prototype[name] ;
} ;
A.remove('test') ;
a.test ; // undefined
有没有办法让一个函数作为另一个函数的实例?所以这个函数可能会隐式地“继承”其构造函数原型中定义的所有方法。
或者,如果您有其他建议,我的目标是构建可模块化的构造函数 - 就像带有原型的实例一样。
【问题讨论】:
标签: javascript constructor prototype