2013-02-21 4 views
0

как объявить параметризованные конструкторы в JavaScript ?? Как это можно сделать в JavaScript?Конструкторы в javascript

public class A() 
    { 
    //variable declaration 
    public A() 
    { 
     //do something 
    } 

    public A(int a) 
    { 
     //do something 
    } 

    public A(int a,int b) 
    { 
     //do something 
    } 
    } 
+3

JavaScript не Java. Период. У вас может быть только один конструктор, но вы выбираете разные типы поведения в зависимости от типов аргументов (например, 'typeof a == 'undefined'') – madfriend

ответ

0
var Class = function(methods) { 
    var klass = function() {  
     this.initialize.apply(this, arguments);   
    }; 

    for (var property in methods) { 
     klass.prototype[property] = methods[property]; 
    } 

    if (!klass.prototype.initialize) klass.prototype.initialize = function(){};  

    return klass;  
}; 
var Person = Class({ 
    initialize: function(name, age) { 
     this.name = name; 
     this.age = age; 
    }, 
    initialize: function(name, age, gender) { 
     this.name = name; 
     this.age = age; 
     this.gender = gender; 
    } 
}); 

var alice = new Person('Alice', 26); 
var rizwan = new Person('riz', 26, 'm'); 
alert(alice.name + ' - alice'); //displays "Alice" 
alert(rizwan.age + ' - rizwan'); //displays "26" 

http://jsfiddle.net/5NPpR/ http://www.htmlgoodies.com/html5/tutorials/create-an-object-oriented-javascript-class-constructor.html#fbid=OJ1MheBA5Xa

1

Любая функция в JavaScript может быть конструктор

function A(paramA, paramB) { 
    this.paramA = paramA; 
    this.paramB = paramB; 

    //do something 
} 

A.prototype.method1 = function(){ 
    console.log(this) 
    console.log('Inside method 1' + this.paramA) 
} 

var a = new A(1, {name: 'Name'}); 
console.log(a.paramA); 
console.log(a.paramB.name) 
a.method1() 

Все переменные экземпляра могут быть созданы с помощью this.<variable-name>=<value>;.
Методы экземпляров могут быть созданы с использованием свойства конструктора prototypefunction.

Вы можете прочитать больше о конструкторах
Simple “Class” Instantiation
Simple JavaScript Inheritance

Вы также можете проверить, существует ли параметр с помощью

if(paramB == undefined) { 
    //do something if paramB is not defined 
} 
+0

Я думаю, что 3-я строка кода должна быть« this.paramB = paramB »для работы (не может сделать 2-х символов, чтобы исправить это, хотя) – Grim

+0

@Grim спасибо, исправлено. –

1

JavaScript не поддерживает перегрузки на основе определений аргументов.

Напишите одну функцию и проверьте, какие аргументы были получены.

function A(a, b) { 
    if (typeof a === "undefined") { 
     // ... 
    } else if (typeof b === "undefined") { 
     // ... 
    } else { 
     // ... 
    } 
} 
Смежные вопросы