我不想用我所有库的方法污染对象的原型。我想将它们隐藏在__namespace属性中。
当您尝试访问对象属性时,如果它未定义,它将查找原型链,如此
a.c -> a.prototype.c -> a.prototype.prototype.c ..
我想实现
a.__namespace.c -> a.prototype.__namespace.c, a.prototype.prototype.__namespace.c ...
例如:
function A(){};
A.prototype.__namespace = {};
A.prototype.c = 2; // normal
A.prototype.__namespace.c = 2; // inside namespace
var a = new A();
a.__namespace = {};
console.log(a.c) // prints 2
console.log(a.__namespace.c); //undefined. Would like to print 2.
是否有javascript功能允许此其他而不是创建它:
function NameSpace(){}
NameSpace.prototype.c = 3;
var a = new A();
a.__namespace = new NameSpace();
console.log(a.__namespace);
选中fiddle。