实现new完整版
function Fn(name,age){
this.name=name;
this.age=age;
}
Fn.prototype.say=function(){
console.log('哈哈哈哈哈')
}
var obj1= new Fn("高",18); console.log("obj1",obj1);
自己模拟
var obj={}
创建对
Fn.call(obj,"gao",19);
改变构造函数的this 指向 --指向 obj obj.__proto__= Fn.prototype;
将构造函数的 prototype(原型 赋值给对象的 __proto__(原型链) 返回 对象。
console.log(obj);
call/apply/bind
var obj={"name":"gao"};
function fn(a,b){
console.log("a:",a,"b:",b) ; console.log(this);默认this -->window
}
fn(1,2);
fn 函数里 的this 指向 obj 对象
第一个参数 this 指向的对象
fn.call(obj,1,2);
fn.apply(obj,[1,2]);
fn.bind(obj,1,2)();
需要手动调用
fn.bind(obj)(1,2);// 需要手动调用