JavaScript singleton usullarida _.bindAll ()?

Quyidagi kodda obj2.method usuli boshqa ob'ektdan chaqiriladi. Obj1 obj2-dan obj2 ga murojaat qilish uchun "bu kontekstni" qanday qilib bog'lay olaman?

var singleton = {
  obj1 : {
     a : 5
  },

  obj2 : {
    method1 : function(){
       this.obj1.a; //undefined
    }
  }
}

Pastki chiziq yordamida foydalanib, _.bindAll() - bu satrlar bo'ylab bir narsa - lekin muvaffaqiyatsiz tugadi ...

var singleton = {
  obj1 : {
     a : 5
  },

  obj2 : {
    method1 : function(){
       this.obj1.a; //undefined
    }
  },
  init : function(){
       _.bind(this, obj2.method1)
  }
}

singleton.init();

Rahmat :)

1
@ ŠimeVidas: Hmm, lekin menimcha boshqa ob'ekt bu usuli qo'llash orqali chaqiradi. Men uni bekor qilmoqchi bo'lgan ...
qo'shib qo'ydi muallif dani, manba
singleton.obj1.a ishlaydi ...
qo'shib qo'ydi muallif Šime Vidas, manba
Men seni kuzatib bormayman ...
qo'shib qo'ydi muallif Šime Vidas, manba

1 javoblar

  1. You need to reassign singleton.obj2.method2() with the results of _.bind():

    // in .init():

    this.obj2.method1 = _.bind(this.obj2.method1, this)

  2. To have singleton.init() have a proper this when called, you need to specify it explicitly:

    singleton.init.call(singleton)

To'liq namoyish bu yerda . Shuni yodda tutingki Singleton naqsh bu < href = "http://tech.puredanger.com/2007/07/03/pattern-hate-singleton/" rel = "nofollow"> yomon , m'kay ?

1
qo'shib qo'ydi
Bu ajoyib javob. Rahmat :) Aytgancha - singleton modelining o'rniga oddiy "yordamchi yordamchi" bilan ishlashga harakat qilaman, bu holatda nima taklif qilasiz? Foydali dastur bir necha dastur parametrlarini saqlashi kerak (ularning ba'zilari init() da ishga tushirilishi kerak). Boshqa dastur moslamalari, ushbu yordamchidan ham berilgan argumentlar va sozlamalarga asoslanib, ba'zi umumiy hisob-kitoblarni bajarishlarini so'rashi mumkin, chunki singleton yaxshi bo'lishi mumkin deb o'yladim. Yana bir bor rahmat.
qo'shib qo'ydi muallif dani, manba
Javascript UZB
Javascript UZB
99 ishtirokchilar

@js_uzb @vuejs_uz @react_uz @nodejs_uz @angular_uz @ngTashkent @yiiframework_uz @laravel_uz @linux_uzbek @python_uz @swift_uzb —————— @uzdevgroup @UzGeeksGroup ——— @UzDev_Jobs @jobs_uzb