Javascript Interview Questions ( Call, Bind and Apply ) - Polyfills, Output Based, Explicit Binding

Поделиться
HTML-код
  • Опубликовано: 13 янв 2025

Комментарии • 141

  • @RoadsideCoder
    @RoadsideCoder  2 года назад +2

    🔴 Get my Complete Frontend Interview Prep course - roadsidecoder.com/course-details

  • @ajitshaw1936
    @ajitshaw1936 2 года назад +31

    Great Video 🤩, Yesterday a interviewer asked me to do a small function like this
    const a = [1,2,3] // Output [1,2,3,1,2,3]
    I used spread method like this [...a,...a]
    Then he asked to do it in some other way, I could have used call and apply
    a.push.call(a,...a);
    a.push.apply(a,a);
    Thank you soo much for your hard work 😇🥰

  • @codeedict3919
    @codeedict3919 2 года назад +11

    You can simpley destruct the array inside Math.max(...numbers) in order to get the same output. Apply isn't necessarily required but thanks for opening new doors, was helpful to understand a new usecase.

    • @madhav3444
      @madhav3444 2 месяца назад

      I found out that 'apply' is an old method for spreading actually, spread operator came in es6

    • @Dhruvsingh-k6p
      @Dhruvsingh-k6p 6 дней назад

      @@madhav3444 I was also wondering why is he using apply for spreading. Thanks for the insight.

  • @juniorWeb247
    @juniorWeb247 2 года назад +1

    one of the best videos I saw on the internet regarding polyfill for bind call and apply. Really really really thank you so much and god bless you, bro.

  • @hamzahusein7059
    @hamzahusein7059 2 года назад +3

    Much needed video, especially wrt implementations using polyfills! Exanples and explanations on point 🚀

    • @RoadsideCoder
      @RoadsideCoder  2 года назад

      Thanks 🔥

    • @askrshar6154
      @askrshar6154 2 года назад

      ruclips.net/video/NkbOa1BcMnQ/видео.html

    • @shoukathennadesigns1906
      @shoukathennadesigns1906 2 года назад

      @@RoadsideCoder make a tutorial series on js else recommend me from where you learn js or else best resources or channels

  • @prateekgupta9744
    @prateekgupta9744 2 года назад +1

    You deserve a subscribe. Keep up the good work bro.

  • @Solo_playz
    @Solo_playz 2 года назад +1

    Yes need video on prototypes of all objects.

  • @karthikeyasoft
    @karthikeyasoft Год назад

    Polyfills understanding lot. How to think. Keep Going......

  • @deepakchoudhary2970
    @deepakchoudhary2970 7 месяцев назад

    Great set of questions and explanation, thanks!

  • @karthikeyasoft
    @karthikeyasoft Год назад

    Great Work! Easy to understand🥰

  • @syednaqvi6572
    @syednaqvi6572 Год назад

    23:14 favourite moment 🤣🤣🤣🤣 but yes I was waiting

  • @dancelifevarsha4109
    @dancelifevarsha4109 2 года назад

    Amazing work Piyush.. Thank you so much your effort 😊

  • @_MS98
    @_MS98 Год назад

    Thanks, Really Helped

  • @madhav3444
    @madhav3444 2 месяца назад

    15:52 how come the 'this' context print Window object even you binded it explicitly with 'null' ? What do you meant by hard-fixed ?

  • @sandeepdubey9668
    @sandeepdubey9668 2 года назад

    Most awaited tutorial for me.Thanks.❤❤

  • @harshsinghchauhan869
    @harshsinghchauhan869 2 года назад

    Bhai quality 🌟🤜💥

  • @siemen_subbaiah
    @siemen_subbaiah 2 года назад +1

    Would love a video on prototypes too to be added in this playlist

  • @investneur8232
    @investneur8232 11 месяцев назад

    usefull,simple to understand .Thanks

  • @akash-kumar737
    @akash-kumar737 5 месяцев назад

    Thanks Bro ❤

  • @pranupranav6279
    @pranupranav6279 2 года назад +1

    Thanks

  • @prasangsinghal262
    @prasangsinghal262 5 месяцев назад

    Amazing explanation.
    Just a little correction, in polyfills implementation for call and apply, I think we need to call and return the return value also i.e. return context.fn(...args).

  • @sajalgupta7345
    @sajalgupta7345 2 года назад

    Hi Piyush,
    Nice Video as always. 😊
    At 14:51, we can also do the following:
    Math.max(...arr) // use of spread operator and avoid loops or apply.

    • @RoadsideCoder
      @RoadsideCoder  2 года назад +2

      Yes true, But I wanted to just mention it with apply, so u have more than one approach 😄

    • @sajalgupta7345
      @sajalgupta7345 2 года назад

      @@RoadsideCoder haha, thats true too.
      Nice output questions.

    • @logeesh2009
      @logeesh2009 2 года назад +1

      I have a question as we spread does that not create new object.

  • @ankushladani496
    @ankushladani496 2 года назад

    Thank You Bhaiya for this amazing video....

  • @conorkamperman957
    @conorkamperman957 2 года назад

    great series, keep up the good work!

  • @srinivasak4087
    @srinivasak4087 Год назад

    super content...very much like it , Thanks lot Sir!

  • @dhwajsharma
    @dhwajsharma 2 года назад

    Yes. Please make a video on prototypes.

  • @ankushladani496
    @ankushladani496 2 года назад

    Can you tell me wHy you have written condition at 23:35 ?

  • @sunilkumar-zf4dx
    @sunilkumar-zf4dx 2 года назад +1

    #22:38 in the window object we have age, why it is displaying undefined.
    Normally
    var age=10;
    let sample={
    age: 20,
    getage: ()=>{
    console.log(this.age);
    }
    }
    sample.getage();
    Output will be :10
    I'm still in confusion 😃 why it is displayed undefined
    var age=10;
    let sample={
    age: 20,
    getage: ()=>{
    console.log(this.age);
    }
    }
    let sample2= {
    age: 30
    };
    sample.getage.call(sample2)
    o/p: 10

    • @mr-36
      @mr-36 2 года назад +2

      Because age variable is declared in the global scope with the keyword const and not var. Unlike var, variables declared with const doesn't belong to the window object when declared in the global scope. I recommend watching Akshay saini's video on let and const. 😃

  • @abhishekvishwakarma9045
    @abhishekvishwakarma9045 2 года назад

    excited for this one

  • @kovendanragupathi7632
    @kovendanragupathi7632 2 года назад +3

    Can you pls do a React specific interview questions, this is what lacks in all the best RUclips channels

    • @RoadsideCoder
      @RoadsideCoder  2 года назад +4

      Yes, I will start a complete series on that soon!

    • @crystalclear178
      @crystalclear178 2 года назад

      Yes please make videos on react

    • @gtbaba123
      @gtbaba123 2 года назад

      @@RoadsideCoder ty bro

    • @shoukathennadesigns1906
      @shoukathennadesigns1906 2 года назад

      @@RoadsideCoder plz first of all make a serious on JavaScript tutorial and problem solving on it 🙁

    • @shoukathennadesigns1906
      @shoukathennadesigns1906 2 года назад

      @@RoadsideCoder make a tutorial series on JavaScript to teach .else plz recommend me from where you learn JavaScript good resources of js which makes my base strong on it plz.

  • @TravelwithPujarini
    @TravelwithPujarini 2 года назад

    Excited 🙌🏻

  • @samkurc6535
    @samkurc6535 2 года назад

    it work on my pc thx bro vеry much

  • @nidhisharma9146
    @nidhisharma9146 8 месяцев назад +1

    At 15:40 sorry for pointing out but you did not clearly clarify why this would represent the global object here. The answer should be in non-strict mode javascript replace the `this` value to global object if it is assigned any value like null and undefined.

  • @sumukhakb2701
    @sumukhakb2701 2 года назад

    Great video. Make a video on js testing

  • @ankushladani496
    @ankushladani496 2 года назад

    Bhaiya I have a Doubt at 18:33 I have written this code
    checkPassword(user.loginSuc.bind(user , checkPassword ), user.loginfail.bind(user , checkPassword ));
    still output is same why ?

  • @ajayshekhawat2292
    @ajayshekhawat2292 2 года назад

    watched our whole series and it was awesome and pls make vidoe on prototype

  • @evangriffith4121
    @evangriffith4121 2 года назад +2

    Thank you for the video! I have a question about #14 for anyone. For the getAgeArrow function, why doesn't the 'this' keyword contain the context of const age = 10 as declared on line 4?

    • @mr-36
      @mr-36 2 года назад +5

      Because it is declared with the const keyword. Variables declared with let and const doesn't belong to the window object. If you replace const with var then it will give us 10 as variables declared with the keyword var in the global scope are added to the window object. Hope it helps ☺

    • @evangriffith4121
      @evangriffith4121 2 года назад

      @@mr-36 Ah, thank you!

    • @askrshar6154
      @askrshar6154 2 года назад

      ruclips.net/video/NkbOa1BcMnQ/видео.html

  • @Rohitsingh2410
    @Rohitsingh2410 5 месяцев назад

    People who are having issues with polyfills just run this , you will get it.
    Function.prototype.myCall=function(context,...args){
    console.log("this ",this);
    console.log("context ",context);
    console.log("args ",args);
    context.func=this;
    console.log("context1 ",context);
    context.func(...args)
    }

  • @sobhanthakur4
    @sobhanthakur4 Год назад +2

    When I executed the same code, (given below), I got the output as undefined. Please explain
    var status = 1;
    setTimeout(() => {
    const status = 2;
    const data = {
    status: 3,
    getStatus() {
    return this.status;
    },
    };
    console.log(data.getStatus.call(this));
    }, 0);

  • @deepakverma2071
    @deepakverma2071 2 года назад +1

    Great video! Thank you for this ❤️
    Can you please make one more playlist of LLD & HLD for frontend interviews?

    • @pankajsajwan3304
      @pankajsajwan3304 2 года назад

      yes sir make in lld playlist

    • @askrshar6154
      @askrshar6154 2 года назад

      ruclips.net/video/NkbOa1BcMnQ/видео.html

  • @muhammadnishad.p.n1170
    @muhammadnishad.p.n1170 2 года назад

    Prototype 🙌🏻

  • @jsagar95
    @jsagar95 2 года назад

    Awesome!

  • @simionandrei5409
    @simionandrei5409 2 года назад +1

    Can you also make a video based on Prototype Inheritance? Awesome content, as always!

  • @arijitroy5695
    @arijitroy5695 2 года назад +1

    Could you please make those videos in hindi language. It will be very easy to us. Please please make videos in easy hindi language..

  • @ShubhamJain-qx9tv
    @ShubhamJain-qx9tv 8 месяцев назад +1

    In call polyfill what does context.fn = this; line represent

  • @DevangPatil
    @DevangPatil 2 года назад

    Awesome!!

  • @s1k_guy
    @s1k_guy 2 года назад

    Nice vedio. Bro 5th bar comment. Kr re hu ki please start makimg vedio DSA with Javascript. Leetcode k sare easy level cover krlo please.

  • @rlxgroot278
    @rlxgroot278 2 года назад

    Excited

  • @investneur8232
    @investneur8232 11 месяцев назад

    Video on prototype please

  • @jayantsharma2669
    @jayantsharma2669 2 года назад

    Hey Piyush, great video again. I think we should delete the 'fn' once it gets executed in the polyfills, bcz we are adding the fn to the context as a method and it will remain attached to the context. So, ideally in call, apply & bind polyfills :
    Function.prototype.myBind = function(context, ...args){
    context.fn = this;
    return function(){
    context.fn(...args);
    delete context.fn;
    }
    }
    PS : Errors/Edge cases are not handled

    • @askrshar6154
      @askrshar6154 2 года назад

      ruclips.net/video/NkbOa1BcMnQ/видео.html

    • @swastikpatro6436
      @swastikpatro6436 2 года назад +4

      Hey Jayant, we can create a function which returns a deepClone of the object passed as argument.
      In the polyfill, we can just create a clone of the context and add that fn method on it and call it futher, leading to not mutating the original context.

    • @gowthamfirestick3791
      @gowthamfirestick3791 Год назад +1

      But there is one problem with above snippet. If the function which is binded if it got executed more than once it will throw an error since the function context is already deleted
      We need something like this
      Function.prototype.myBind =function(obj, ...args) {
      let _obj = JSON.parse(JSON.stringify(obj));
      _obj.fn = this;
      return function(...extraArgs) {
      _obj.fn(...args, ...extraArgs);
      }
      }

  • @suhaskambale7998
    @suhaskambale7998 2 года назад

    please sir upload your video daily 🙏

  • @Ashish-_-
    @Ashish-_- Год назад

    Hi Piyush, just one thing, in the polyfills, I think we shouldn't add our function directly to the context object as it manipulates the original object. We can clone the object and then call our context.fn()

  • @rajdeepjadav6263
    @rajdeepjadav6263 2 года назад

    Please make a complete video on Promises.

  • @pavandhumwad4140
    @pavandhumwad4140 2 года назад

    Polyfill for Promise is much needed video(Not so good content on this topic). Pls make video if possible

  • @ashishroshan3300
    @ashishroshan3300 7 месяцев назад

    For pollyfill, can't we create call,apply and bind with Object protoype ?
    According to your implementation, it will throw error if we attach these methods with object having a function.

  • @dheerajraja9811
    @dheerajraja9811 Год назад +1

    Good explanation, but would be better if you explain them a bit slower :)

    • @kinrev6719
      @kinrev6719 Год назад

      Their is an option in the yt video window -> settings -> playback speed(0 - 2x) you can slow it accordingly.

  • @hemangkoshiyar
    @hemangkoshiyar 4 месяца назад

    Function.prototype.myCall = function(context = {}, ...args){
    if(typeof this !== 'function'){
    throw new Error(this + ' is not callable')
    }
    context[this.name] = this;
    context[this.name](...args)
    }
    We can also make our context object function key as our function name by doing this.

  • @rohanpal2180
    @rohanpal2180 Год назад

    can u pls make similar series for Reactjs

  • @brajagopalmukherjee1588
    @brajagopalmukherjee1588 2 года назад +1

    Bhaiya bht din video nhi ayi ,how are you?
    One Request bhaiya can u start react and next combined course which will cover basics to advanced with project also ? I was trying to learn ,not able to focus what to learn

    • @RoadsideCoder
      @RoadsideCoder  2 года назад

      Bro abhi sunday ko hi to dali hai video 😄

    • @brajagopalmukherjee1588
      @brajagopalmukherjee1588 2 года назад

      @@RoadsideCoder ha bhaiya ,btt regular video nhi dal raha ho na islia bola 🥲,like koi courses ....

    • @RoadsideCoder
      @RoadsideCoder  2 года назад

      @@brajagopalmukherjee1588 Ha job ki vjh se time ni mil pata, but I'm trying

  • @ankushladani496
    @ankushladani496 2 года назад

    We want video on prototype also....

  • @gouravprajapati3270
    @gouravprajapati3270 8 месяцев назад

    When I use bind, along with the output, why am I getting undefined?

  • @crystalclear178
    @crystalclear178 2 года назад

    Please complete react js interview series

  • @sriramganesh7239
    @sriramganesh7239 2 года назад

    Bro, certification is necessary to get job

  • @swastikpatro6436
    @swastikpatro6436 2 года назад

    Using myCall, myBind Or myApply mutates the car1 object,
    After using the polyfill try consoling the car1 object, you'll find fn method on it.

  • @logeesh2009
    @logeesh2009 2 года назад

    Please explain important methods in lodash with polyfills for group by and order by

    • @askrshar6154
      @askrshar6154 2 года назад

      Please like subscribe and Share ruclips.net/video/NkbOa1BcMnQ/видео.html

  • @santhoshkumarzod
    @santhoshkumarzod 11 месяцев назад +1

  • @sriramganesh7239
    @sriramganesh7239 2 года назад

    Bro, plz tell I want to solve many more problems in javascript based questions....can u tell where I can take

  • @BharathKumar-iq7ku
    @BharathKumar-iq7ku 2 года назад +1

    Just Watched your complete javascript interview questions playlist videos, you just killed it ✨✨..Can you please make a video specifically for a Polyfills and prototype , please?

    • @RoadsideCoder
      @RoadsideCoder  2 года назад +2

      Hey, Thank you so much. Sure, I'll make a video on prototypes and other topics too!

    • @BharathKumar-iq7ku
      @BharathKumar-iq7ku 2 года назад

      @@RoadsideCoder thanks buddy

  • @DevangPatil
    @DevangPatil 2 года назад

    Can you please make a video on debouncing and throttling?

    • @askrshar6154
      @askrshar6154 2 года назад

      Please like subscribe and Share ruclips.net/video/NkbOa1BcMnQ/видео.html

  • @priyankaamahour
    @priyankaamahour Год назад

    Thank you soo much for this video, very informative
    I have one question, in question no 14 we have const age = 10, why this age isn't present in window object??
    if I change const to var, var age = 10, then this is available in window object
    can you please explain why so??

    • @tangudusrinivasu8855
      @tangudusrinivasu8855 Год назад

      since age is declared with Const, its scope will be Script so it will not be present in the global scope.
      Global or Window object shows only global scope elements

    • @rakshitdevra7060
      @rakshitdevra7060 10 месяцев назад

      Thanks for clearing the doubt

  • @acchugowda7767
    @acchugowda7767 2 года назад

    Hi please make a vedio on event looping, if you have already made a vedio on this please the link.

  • @subhanOther
    @subhanOther 2 месяца назад

    I have taken a challenge and created polyfills of call like this
    const person = {
    age: 20,
    };
    function test() {
    console.log(`I am ${this.age} years old!`);
    }
    Function.prototype.myCall = function (...rest) {
    let params = rest.slice(1);
    this.apply(rest[0], params);
    };
    test.myCall(person);

  • @ashishchandwani9179
    @ashishchandwani9179 2 года назад

    Exicted!

  • @santoshmore2953
    @santoshmore2953 2 года назад

    bro please do object oriented programming in js

  • @anuragsharma966
    @anuragsharma966 2 года назад

    4:40 🤣🤣🤣

  • @tejendrarajawat4054
    @tejendrarajawat4054 2 года назад +3

    All numbers are numbers but 69 is a feeling

  • @ranawaqas4080
    @ranawaqas4080 10 месяцев назад

    Great

  • @ashishchandwani9179
    @ashishchandwani9179 2 года назад +1

    Can you please make a video on interview questions on "promises" as well.

  • @shubhamchakraborty7904
    @shubhamchakraborty7904 2 года назад

    ES6 is the best part

  • @RahulKumar-ew1qw
    @RahulKumar-ew1qw 2 года назад

    💓🙏🏻

  • @nirajsali6939
    @nirajsali6939 2 года назад

    a video freser ke liye hai

  • @Artur-pj2vl
    @Artur-pj2vl 8 месяцев назад

    if you call 'myCall' function like this` myCall(null, "USD", 100), you will probably get an error, because you are trying to assign a function to property of null

  • @coder-webdev5907
    @coder-webdev5907 2 года назад

    Somebody help me in this problem
    Please write solution in javascript
    Write a function called do_allocation(number_of_people, number_of_buses)
    The function should return a list of number of people who can get into the next bus that comes in based on the following logic:
    Each bus’s capacity is the sum of the capacities of the previous two buses.
    Once all the people get in, then the buses can continue, but will have 0 people inside it.
    This is the case when the number of people are less and there are more buses. So after all the people are already boarded, then the remaining buses will have 0 people boarding.
    The output of the function is an array/list with the same length as number_of_buses.
    The total of this output array/list should be less than or equal to the number_of_people.
    The first bus’ capacity can be set to 1 by default.
    E.g.
    Def do_allocation(number_of_people, number_of_buses):
    …. Your code….
    Return array[number of people got into first bus, number of people got into second bus, …. , number of people who got into last bus]

  • @raj-pl8xz
    @raj-pl8xz Год назад

    This never points to function

  • @aquibmohd
    @aquibmohd 2 года назад

    4:38 69 IQ moves 😂

  • @syedeliyaz1993
    @syedeliyaz1993 2 года назад

    Why we wanna pay money for accesing ur videos brother

    • @RoadsideCoder
      @RoadsideCoder  2 года назад

      I didn't understand, when did I ask for money bro?

  • @60seconds81
    @60seconds81 3 месяца назад

    why 69?

  • @mohitkumbhare1491
    @mohitkumbhare1491 11 месяцев назад

    only questions are useful and get more knowledge from anywhere else with these questions
    , you have not provided any proper explaination here.

  • @premsingh6967
    @premsingh6967 2 года назад

  • @karthikk1098
    @karthikk1098 Год назад

    Just tried handling null cases:
    Function.prototype.myBind = function (context={}, ...params){
    let currentFunc = this;
    if(context==null){
    return function (...args1){
    currentFunc(...params, ...args1);
    }
    }
    else{
    context.fn = currentFunc;
    return function (...args1){
    context.fn(...params, ...args1);
    delete context.fn;
    }
    }
    }​
    var a = "to";
    const obj = {
    a: "for",
    meth: function(a,b){
    console.log("hello", this.a, a,b);
    }
    };
    var f1=obj.meth.myBind(null,"my");
    var f2=obj.meth.bind(null,"my");​
    var f3=obj.meth.myBind(obj,"my");
    var f4=obj.meth.bind(obj,"my");

    f1("world"); f2("world"); f3("world"); f4("world");
    ​//hello to my world
    //hello to my world
    //hello for my world
    //hello for my world
    Or simply we can use:
    Function.prototype.myBind = function (...args){
    let currentFunc = this;
    let params = args.slice(1);
    return function(...args1){
    currentFunc.call(args[0],...params,...args1);
    }
    }

  • @russellh8529
    @russellh8529 2 года назад

    𝐩𝐫𝐨𝐦𝐨𝐬𝐦