美文网首页
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