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