在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、this指向构造函数中的this 指向实例对象。那么原型对象this的指向呢? 如下: function Student(age,name){ this.age = age; this.name = name; } var that; Student.prototype.score = function(){ console.log('孩子们成绩都很好!'); that = this; } var xl = new Student(18,'小熊'); xl.score(); console.log(that === xl); 定义一个全局变量that,在score函数里面给它赋值,让其指向函数里面的this,调用实例对象的score方法,判断that和实例对象是否一致,如果一致,则说明原型对象this的指向是该实例。 打印结果为:
即原型对象里面放的是方法, 这个方法里面的this 指向的是 这个方法的调用者, 也就是这个实例对象。 二、修改this指向1、call()方法写一个简单的两数相加的函数。 function fn(a,b){ console.log(a+b); console.log(this); } fn(1,2) 在函数内部打印this,调用函数,看其this的指向。
可知this指向window对象,如果我们想让this指向我们新创建的一个对象,怎么操作呢? 先定义一个对象, o = {}; 然后通过call()修改this指向,让其指向新创建的对象o o = { name: 'xl' }; fn.call(o,1,2); 打印结果为:
现在this指向新创建的对象o,即修改成功。 2、apply()方法apply()和call()方法基本相同,这里就不赘述,直接上代码: function fn(a,b){ console.log(a+b); console.log(this); } o = { name: 'xl' }; fn.apply(o,[1,2]); 可以发现,这两种方法还是有区别的,即:call()接受的参数必须是连续参数,而apply()方法接收参数的形式是数组参数。 总结
|
请发表评论