我不想用我所有圖書館的方法來污染對象的原型。我想將它們隱藏在__namespace屬性中。不想污染對象的原型。如何讓原型繼承w /命名空間?
當您嘗試訪問對象的屬性,如果它是不明確的,它會查找原型鏈,像這樣
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.
Is there一個JavaScript功能,使這個其他不是創造什麼樣子:
function NameSpace(){}
NameSpace.prototype.c = 3;
var a = new A();
a.__namespace = new NameSpace();
console.log(a.__namespace);
檢查這個fiddle。
您正在通過初始化a.namespace = {} –
來覆蓋命名空間的值。這纔是重點。 – Ludo
如果你想要父母的價值,你不需要做a.namespace = {} –