js使用call的调用和直接调用函数的区别
1个回答
展开全部
个人觉得主要是过程不同:
一个是构造对象、一个是函数调用。
function b() {
this.p = 1;
this.p1 = 2;
}
var a = new b();
a.p // 1
a.p1 //2
var c = b();
c.p // 报错
c.p1 // 报错
new:
实际上a的__proto__成员指向了b对象prototype成员对象,然后b函数对象的this指针替换成a,然后再调用b函数(),这时候的a里面的this变成了a自己,所以a拥有p和p1
a.__proto__=b.prototype;
b.call(a)
function b() {
a.p = 1;
a.p1 = 2;
}
一个是构造对象、一个是函数调用。
function b() {
this.p = 1;
this.p1 = 2;
}
var a = new b();
a.p // 1
a.p1 //2
var c = b();
c.p // 报错
c.p1 // 报错
new:
实际上a的__proto__成员指向了b对象prototype成员对象,然后b函数对象的this指针替换成a,然后再调用b函数(),这时候的a里面的this变成了a自己,所以a拥有p和p1
a.__proto__=b.prototype;
b.call(a)
function b() {
a.p = 1;
a.p1 = 2;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询