课程
/前端开发
/Node.js
/进击Node.js基础(一)
老师在构造函数Dog中用了一个Pet.call(this,words)来继承Pet构造函数的属性和方法,请问这个Pet.call(this,words)中参数 this和words是什么意思呢
2016-12-11
源自:进击Node.js基础(一) 5-7
正在回答
new一个函数,函数里的this首先指向一个空对象,验证如下:
function Test() { console.log(this); // Test {} } var test = new Test();
也就是说,在代码 Pet.call(this, words); 中,其中的this是一个空对象,这个空对象是Dog对象的一个实例,然后Pet函数被这个原型指向Dog的空对象调用,即此时Pet函数中的this指向这个空对象,为这个空对象添加了一个words属性和一个speak方法,然后将这个对象返回并赋值给 dog变量。
xs_wang
苏子晨
1--- this 是Pet对象本身
2--- words是对象的成员属性 (this.words=words中的第二个words)
3--- 此时的dog可以看做是pet的副本 (他们虽然长得一样,应该是两个不同的个体,就像是两个一样的碗,但两个又都是独立的)
4--- var dog = new Dog('wang') ++++++ 此时words已经被 wang 覆盖
所以当dog.speak()是 打印出 wang
JohnDoe4290627
this指向的是Dog,words是Dog的传入值。call或者apply都相当于是借用而已,比如Pet.call(this,words)表示的是this(也就是Dog)借用了Pet的方法,后面的words都是传入的参数而已。http://www.cnblogs.com/fighting_cp/archive/2010/09/20/1831844.html比较详细
举报
本视频教程带你揭开Node.js的面纱,带你走进一个全新世界