2014-01-17 3 views
0

Я хочу определить публичную и частную собственность в классе JavaScript,Как определить государственную и частную собственность в javascript

Здесь вы видите C# -формат моих свойств.

Мой вопрос: «Как я могу написать эти свойства с JavaScript»:

public class MyMath 
{ 
    public static double Pi 
    { 
     get {return 3.14;} 
    } 

    public static int R {get; set;} 

    private int MyPrivateProp1 {get; set;} 

    public double MyCalcMethod() 
    { 
      return MyPrivateProp1 * R; 
    } 
} 

Я хочу использовать этот класс, как:

var x = MyMath.Pi * MyMath.R; 

Заранее спасибо за ваше время.

+0

Где ваша частная проп? –

+1

@Simsons, JavaScript имеет сильные объектно-ориентированные возможности программирования. см. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript –

+0

@ mini-me. Вы можете создавать частные переменные внутри функции, на которую нельзя ссылаться извне. – Nunners

ответ

1

Вы можете создать self-executing функции для создания объекта, это позволит затем мгновенно вызывать переменные и методы от вашего Javascript без необходимости создавать экземпляр объекта.

Пример: JSFiddle

var myMath = (function MyMath() { 
    this.Pi = 3.14; 
    this.R = 0; 

    var MyPrivateProp1 = 15; 

    this.MyCalcMethod = function() { 
     return R * MyPrivateProp1; 
    }; 

    return this; 
})(); 

myMath.R = 5; 

var x = myMath.Pi * myMath.R; 

console.log(myMath.Pi); 
console.log(myMath.R); 
console.log(myMath.MyPrivateProp1); //This is returned as Undefined because it is a Private Variable to the Object. 
console.log(myMath.MyCalcMethod()); 
console.log(x); 

Обратите внимание на return this в конце функции, это необходимо, чтобы гарантировать, что объект передается в переменную myMath.

0

Вы можете создать объект, в котором будут храниться две переменные.

Пример:

var MyMath = {}; //Create a new object 
MyMath.Pi = 3.14; 
MyMath.R = function(value){ 
    if(value !== undefined){ 
     this.val=value; 
    }// Set 
     else return this.val //Get 

}; 

И вы можете использовать его, как вы хотели:

var x = MyMath.Pi * MyMath.R(5); 
1

Ответ закрытия.

var Person = function() { 
    var localVariable = "I'm hidden"; 

    this.publicProperty = "example"; 

    this.publicFunction = function() { 
     // This function has access to the localVariable 
     // but nothing outside can get to it directly. 
     console.log(localVariable); 
     return "aren't I clever?"; 
    } 
}; 

Person.prototype.staticProperty = "A banana"; 

Теперь вы можете создать экземпляр вашего лица класса:

var aPerson = new Person(); 
console.log(aPerson.publicProperty); 
console.log(aPerson.publicFunction()); 
console.log(aPerson.staticProperty); 
console.log(aPerson.localVaraible) // undefined. 
0

Попробуйте этот код:

// define the MyMathClass 
    function MyMath() { 
     function MyPrivateProp1(){ 
     //Define get set; 
     } 
    } 
    MyMath.prototype.Pi = function(){ 
    //Define get 
     return 3.14; 
    }; 

    MyMath.prototype.R = function(){ 
    //Define get and set 
    }; 


    var MyMath = new MyMath(); 
    var x = MyMath.Pi() * MyMath.R(); 

литературы. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide http://javascriptissexy.com/oop-in-javascript-what-you-need-to-know/

Смежные вопросы