Хорошо, мы можем иметь частные идентификаторы в javascript, но как насчет защищенных - PullRequest
3 голосов
/ 19 июня 2009

Как просто, можем ли мы каким-то образом эмулировать "защищенную" видимость в Javascript?

Ответы [ 4 ]

4 голосов
/ 19 июня 2009

Сделайте это:

/* Note: Do not break/touch this object */
...code...

Или гугл нашел это на первой странице:

http://blog.blanquera.com/2009/03/javascript-protected-methods-and.html

2 голосов
/ 19 июня 2009

Конечно Вы можете. Вот еще один пример .

1 голос
/ 26 ноября 2012

Здесь стоит упомянуть интересную схему: функция-конструктор JavaScript может возвращать любой объект (не обязательно this ). Можно создать функцию конструктора, которая возвращает прокси-объект, который содержит прокси-методы для «реальных» методов «реального» объекта экземпляра. Это может показаться сложным, но это не так; Вот фрагмент кода:

var MyClass = function() {
    var instanceObj = this;
    var proxyObj = {
        myPublicMethod: function() {
            return instanceObj.myPublicMethod.apply(instanceObj, arguments);
        }
    }
    return proxyObj;
};
MyClass.prototype = {
    _myPrivateMethod: function() {
        ...
    },
    myPublicMethod: function() {
        ...
    }
};

Приятно то, что создание прокси может быть автоматизировано, если мы определим соглашение для именования защищенных методов. Я создал небольшую библиотеку, которая делает именно это: http://idya.github.com/oolib/

1 голос
/ 19 июня 2009

Что бы это могло значить? У вас нет классов .

Полагаю, вы могли бы проанализировать caller, чтобы определить, соответствует ли он некоторому набору критериев для разрешения вызова метода. Это будет ужасно неэффективно, и ваши критерии всегда будут поддельными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...