Как наследовать члена парламента, не занимающего официального поста в JavaScript?

Вот то, что я использую (хотя у меня есть они в ярлыке вместо файла настроек):

eclipse.exe-showlocation-vm "C:\Java\jdk1.6.0_07\bin\javaw.exe"-vmargs-Xms256M-Xmx768M-XX: + UseParallelGC-xx:maxpermsize=128m

6
задан david.schreiber 28 November 2009 в 17:19
поделиться

4 ответа

Используя шаблон конструктора мощности Дугласа Крокфорда (ссылка на видео), вы можете получить защищенные переменные следующим образом:

function baseclass(secret) {
    secret = secret || {};
    secret.privateProperty = "private";
    return {
        publicProperty: "public"
    };
}

function subclass() {
    var secret = {}, self = baseclass(secret);
    alert(self.publicProperty);
    alert(secret.privateProperty);
    return self;
}

Примечание: с помощью шаблона конструктора мощности вы не используйте новый . Вместо этого просто скажите var new_object = subclass (); .

13
ответ дан 8 December 2019 в 17:23
поделиться

Пометьте свои частные переменные какой-нибудь разметкой, например подчеркиванием в начале _ Таким образом, вы узнаете, что это частная переменная (хотя технически это не так)

this._privateProperty = "private";
alert( this._privateProperty )
1
ответ дан 8 December 2019 в 17:23
поделиться

This isn't possible. And that isn't really a private property - it's simply a regular variable that's only available in the scope in which it was defined.

0
ответ дан 8 December 2019 в 17:23
поделиться

That can't be done, but you could delete the property from the class prototype so that it is not inherited:

SubClass.prototype.privateProperty  = undefined;

That way it won't be inherited, but you need to do that for every "private" property in your base class.

0
ответ дан 8 December 2019 в 17:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: