Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как сделать вызов методов и переменных скрипта через переменную. (https://javascript.ru/forum/events/20553-kak-sdelat-vyzov-metodov-i-peremennykh-skripta-cherez-peremennuyu.html)

devote 10.08.2011 13:02

Ну приватные методы это те что не выходят за пределы объекта, тоесть по сути написав:
(function(window){
   // это приватные переменные
   var private1 = 2,
        private2 = 10;

   var lib = function() {
      // тут мы можем обратиться к приватным переменным
      return private1 * 2;
   }

   // итут можем
   // и в любом созданном методе в этом [[scope]]
   // ................

   window.blahblah = lib
})(window);

alert( blahblah.private1 ); // undefined
alert( blahblah.lib() ); // = 4

melky 10.08.2011 13:07

так, например
var myobject = new function(){
     var private = 'private';
     return {
         show : function(){ alert(private); }
     };
}

myobject.show()

Kotakota 10.08.2011 13:25

Этот способ я знаю.
Как то сам пытался вывесит alert'ом, то, что написал devote в своем последнем сообщении:
alert( blahblah.private1 ); // undefined

А как это можно сделать в рамках объекта?
Что то типа:
myobject = {
a = 5; // Как сделать ее приватной?
}

Мои мысли уходят примерно в это русло:
myobject = {
a : function(){ a = 5};
}

Как то так....

devote 10.08.2011 13:26

никак

melky 10.08.2011 13:34

var a = { b : "hello!" };

Object.defineProperty( a , "prop", {  value : "WTF?"  });

// a.prop -> "WTF?"
a.prop = "ololo";

// а теперь это "ololo"
alert( a.prop );

for( var i in a ) 
    alert( "a[ "+i+" ] = "+a[i] );

// prop типа приватная

devote 10.08.2011 13:37

melky,
Дык он про константы чтоль имел ввиду? Видимо я его не понял =)

melky 10.08.2011 13:40

а там не константа

он хотел типа такого

a = {
   private string MyStr = "Mystring!";
}

MAKEMAGIC (  a.MyStr ); // YAHOO! -> "Mystring!"

devote 10.08.2011 13:42

Цитата:

Сообщение от melky
а там не константа

быстро ты сменил первый вариант
Цитата:

Сообщение от melky
// prop типа приватная

типа :)

melky 10.08.2011 13:43

Цитата:

Сообщение от devote (Сообщение 119439)
быстро ты сменил первый вариант

у меня есть привычка редактировать сообщения, после того, как их написал :)

Kotakota 10.08.2011 14:18

Цитата:

Сообщение от melky (Сообщение 119437)
а там не константа

он хотел типа такого

a = {
   private string MyStr = "Mystring!";
}

MAKEMAGIC (  a.MyStr ); // YAHOO! -> "Mystring!"

Да, типа такого и хотел!
Спасибо, поразбираюсь.


Часовой пояс GMT +3, время: 05:45.