Başka bir nesnenin yapıcısının "bu" atamalarını kullanması ve tüm bu nesnelerin prototipini alması için bir JavaScript nesnesi almaya çalışıyorum fonksiyonlar. İşte başarmak çalışılıyor ne bir örnek:"this =" işlevini kullanarak Javascript işlevi "atamada geçersiz sol taraf" verir
/* The base - contains assignments to 'this', and prototype functions
*/
function ObjX(a,b) {
this.$a = a;
this.$b = b;
}
ObjX.prototype.getB() {
return this.$b;
}
function ObjY(a,b,c) {
// here's what I'm thinking should work:
this = ObjX(a, b * 12);
/* and by 'work' I mean ObjY should have the following properties:
* ObjY.$a == a, ObjY.$b == b * 12,
* and ObjY.getB == ObjX.prototype.getB
* ... unfortunately I get the error:
* Uncaught ReferenceError: Invalid left-hand side in assignment
*/
this.$c = c; // just to further distinguish ObjY from ObjX.
}
Ben ObjY 'bu' için ObjX en atamaları subsume olması konusunda Düşüncelerin için minnettar olurum (yani tüm this.$* = *
atamaları tekrarlamak zorunda değildir ObjY'nin kurucusu) ve ObjY ObjX.prototype olduğunu varsayalım. İdeal
function ObjY(a,b,c) {
this.prototype = new ObjX(a,b*12);
}
ben yani gibilerin 'klasik' cepten ikame herhangi birini kullanmak zorunda değildir (bir prototypal şekilde bunu öğrenmek istiyorum:
ilk düşüncem şu denemektir Base2).
Terminoloji doğruysa, ObjY'nin anonim (örn. factory['ObjX'] = function(a,b,c) { this = ObjX(a,b*12); ... }
) olması dikkat çekicidir.
Teşekkür ederiz.
related: [? Ben yeni bir değer atanamıyor Neden “Bu” bir prototip fonksiyonunda] (http: // stackoverflow.com/q/9713323/1048572) – Bergi