تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ nafise
درباره ی prototype ها
جامعه جاوا اسکریپت ایجاد شده در ۱۹ آذر ۱۴۰۱

سلام من این کد رو وقتی اجرا میکنم tesfuncداخل prototype مقدار نامشخص undefinde میده در حالی که تابع‌های داخل ابجکت‌ها f()رو نشون میدن اشکل کد چیه؟

       function testfunc() {
            console.log('hi')
        }
        function test (){
        console.log('by...')
        }
        let animal = {
            eats: true,
            walk() {
                console.log('walking ......');
            },
            text(){
                alert('agine...')
        }
        };
        let rabbit = {
           jumb: true
        }
         rabbit.__proto__ = animal;
        console.log(rabbit);
        rabbit.walk();
      
        function cat() {
             this.eats = false;
        }
        cat.prototype = animal;
        cat.prototype.testfunc= testfunc()
        cat.prototype.test= test()
       let cat1 = new cat();
         console.log(cat1)

سلام،

testfunc رو اگر بصورت اجرایی بهش بدید مثل بالا باید return داخلش بذارید تا خروجی رو قرار بده داخل prototype چون دراین حالت testfunc اجرا میشه و عمل console.log انجام میشه و خروجی تابع هم undefined هست و مقدار undefined داخل prototype مقداردهی میشه همون چیزی که واستون سؤال شده چرا.

اما اگر بخواید تابع testfunc اجرا نشه و خود فانکشن به prototype نسبت داده بشه بدون () باید بذارید تا تابع اجرا نشه. درستش به شکل زیر میشه:

cat.prototype.testfunc = testfunc;
cat.prototype.test = test;
محسن موحد ۲۹ آذر ۱۴۰۱، ۲۳:۱۰