Javascript объекты вопросы - PullRequest
       4

Javascript объекты вопросы

1 голос
/ 25 августа 2010

Я из c # объектно-ориентированного фона и для работы с аналогичными участниками в JavaScript.Какие-нибудь хорошие статьи, которые могут помочь мне в исследовании?

Это пример, который я собрал для объекта Product Javascript:

function Product() {
    this.reset = function () {
        this.id = 0;
        this.name = '';
    }
}

Product.prototype = {
    loadFromJson: function (json) {
        this.reset();
        this.id = json.Id;
        this.name = json.Name;
    },

checkAvailability: function (qty) {
    // Just to illustrate
    return true;
}
};

Итак, чтобы создать экземпляр Product:

var p = new Product();

Для доступа к общедоступному методу:

var isAvailable = p.checkAvailability(1);

Чтобы получить доступ к общедоступному свойству:

var name = p.name;

Является ли функция сброса созданной действительной частной функцией?

Правильно ли то, что я делаю выше или есть лучший способ?Я новичок в этом!

Кроме того, если я создаю экземпляр продукта в другом файле javascript, могу ли я получить информацию о свойствах объекта Product?

Ответы [ 3 ]

1 голос
/ 25 августа 2010

Я предлагаю прочитать эту страницу MSDN для получения основной информации.Это как ускоренный курс для разработчиков на c #.

1 голос
/ 25 августа 2010

Является ли функция сброса Я создал действительную частную функцию?

Нет.Он отличается от функций, установленных на prototype, потому что вы получаете различную копию reset для каждого экземпляра Product:

var p1= new Product();
var p2= new Product();
alert(p1.loadFromJson===p2.loadFromJson); // true
alert(p1.reset===p2.reset); // false

, но она не является частной.Вы по-прежнему можете:

var p= new Product();
p.reset();

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

См. этот вопрос для подробного обсуждения объектных моделей JS.1020 *

1 голос
/ 25 августа 2010

Сброс равен this.reset();, поэтому он находится в области видимости объекта и, таким образом, может называться общедоступным, но остается в этой области. В вашем примере p.reset();, но reset(); терпит неудачу.

лучше? Зависит от того, какие обстоятельства требуют этого комплекса, а какие нет. Существует несколько способов создания экземпляров объектов (в JavaScript все является объектом), и ваши примеры являются некоторыми из способов.

Нет интеллекта, если вы не создадите и не приложите свои собственные (МНОГО работы). (найдите в jQuery intellisence, чтобы увидеть, как это сделать)

См. Это для получения дополнительной информации о пространстве имен. Обратите внимание на внутренние и публичные функции и переменные.

var myStuffApp = new function()
{
    var internalFunction = function()
    {
        alert('soy una función interna');
    };
    this.publicFunction = function()
    {
        alert('soy una función pública');
    };
    var test1 = 'testing 1';//private/internal
    this.test2 = 'testing 2';// namespaced
    testA="ho";// global
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...