美文网首页
call/apply

call/apply

作者: Volcaner | 来源:发表于2021-02-03 14:57 被阅读0次
    var Human = function(name, sex, age) {
      this.name = name;
      this.sex = sex;
      this.age = age;
      this.talk = function() {
        console.log("Hello, I am " + this.name);
      };
    }
    Human.prototype.create_time = "0000.01.01";
    var Man = function(name, age) {
      Human.call(this, name, "Male", age);
      this.action = function() {
        console.log('I can fight!');
      };
    }
    
    // new
    var man0 = new Man('AAA', 18);
    
    // 手动new
    var man1 = {};
    man1._proto_ = Man.prototype;
    Man.call(man1, 'JJJ', 20);
    
    // 手动new => apply
    // var man2 = {};
    // man2._proto_ = Man.prototype;
    var man2 = Object.create(Man.prototype);
    Man.apply(man2, ['CCC', 19]);
    
    // 手动new => call
    var man3 = {};
    // man3._proto_ = Man.prototype;
    Object.setPrototypeOf(man3, Man.prototype);
    Man.call(man3, 'BBB', 17);
    
    // .call(thisArg, ...arg)
    // 当 thisArg 为 undefined 时或者不传,this 指向 :严格模式 undefined / 非严格模式 全局对象(如 window)
    Man.call();
    

    JavaScript new的过程

    https://juejin.cn/post/6844903966149443597

    image.png

    相关文章

      网友评论

          本文标题:call/apply

          本文链接:https://www.haomeiwen.com/subject/jjgptltx.html