نمایش نتایج 1 تا 3 از 3

نام تاپیک: صدا زدن یک کلاس به طور داینامیک

  1. #1
    کاربر دائمی آواتار zamanphp
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    اصفهان
    پست
    123

    صدا زدن یک کلاس به طور داینامیک

    با سلام
    در شرایطی مجبورم یک کلاس که آرگومان سازنده آن یک آبجکت هست رو به طور داینامیک صدا بزنم
    ولی متاسفانه بعد از صدا زندن کلاس آن آبجکت به عنوان یک رشته به کلاس فهمانده می شود
    چیکار باید بکنم :
    مثال :
    <script type="text/javascript" src="mootools-1.2.4-core.js"></script>
    <script>
    var myclass = new Class({
    initialize: function(options){
    alert(options.name);
    }
    });

    callClass = new myclass({'name' : 'zamanphp'});//output : zamanphp
    eval('new myclass("' + {'name' : 'zamanphp'} + '")');//output : undefined
    </script>




  2. #2
    کاربر دائمی آواتار eAmin
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    Node.js
    پست
    447

    نقل قول: صدا زدن یک کلاس به طور داینامیک

    سلام.

    راستش من درست منظورتون رو متوجه نشدم، ولی اگر با eval مشکل دارید، خب این طبیعی هست، آرگومان eval حتما باید از نوع string باشه، ولی شما در بین string از نوع object استفاده کردید، و چون تابع eval نمی تونه object رو پردازش کنه، به این مشکل بر می خورید.
    این کد درست اجرا می شه:
    eval('new myclass({"name":"zamanphp"})');//output : zamanphp


    نمی دونم، شاید بنده هنوز متوجه منظور شما نشدم.

  3. #3
    کاربر دائمی آواتار zamanphp
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    اصفهان
    پست
    123

    نقل قول: صدا زدن یک کلاس به طور داینامیک

    ممنون دوست عزیز ، من همان روز بعد از 1 ساعت سرروکله زدن بالاخره حلش کردم : اینم نتیجه :
    var myclass = new Class({
    initialize: function(options){
    alert(options.name);
    }
    });

    var person = new Object();
    person.name = 'zamanphp';
    person.age = 12;

    callClass = new myclass(person);//output : zamanphp
    eval('new myclass(' + 'person' + ')');//output : andy

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •