老师讲的含糊其辞啊!

来源:6-3 [JavaScript]this

proto

2015-12-13 14:14

这节课的

  • 对象原型链上的this

这一小节中有这样一个case:

var o={f:function(){return:this.a+this.b}}
var p=Object.creat(o)
p.a=1
p.b=4
console.log(p.f())//5

这里老师讲的太含糊其辞了,什么叫this也能指向对象p呀?




我激动了!!不好意思!!

写回答 关注

8回答

  • weibo_宝慕林349606
    2016-09-14 11:23:00

    我感觉从作用域来理解this好一点

  • superboo
    2016-06-08 11:07:55

    一句话理解this.不用管this在什么方法中。谁调用.this指向谁就对了。

  • Down_Up
    2016-04-26 21:42:45

    此时应该是this指向p吧!所以结果。。。。。。

  • 慕男婶
    2015-12-13 14:50:02

    所以,遇到与面向对象相关的this指向问题时,可以认为JavaScript引擎偷偷的在函数中传入了一个参数(第一个参数,要牢记!!),只是你看不见,参数值就是 . 之前的对象。。然后,方法用this来接收了这个对象,然后你就可以在方法中尽情地使用this了。

    proto

    对,我一激动搞错了,是方法调用的this。。。。

    2015-12-13 14:51:12

    共 1 条回复 >

  • 慕男婶
    2015-12-13 14:47:36

    告诉你个技巧,要理解this指向谁并不难。。

    比如:

    var o={f:function(){return:this.a+this.b}}

    o.f();

    可以理解成

    f(o);

    及把o作为参数传入了f中,然后f用一个变量叫做this来接收了这个o。。所以在

    f中,this.a就相当于 o.a,this,b就相当于o.b

  • 木子舟义
    2015-12-13 14:32:16

    我觉得你理解可能有点问题。http://img.mukewang.com/566d10eb0001e43b03220375.jpg

    木子舟义 回复proto

    对 p 调用就指向p 如果再Object.create 一个 其他的实例。再这个实例调用 就指向这个实例了

    2015-12-13 14:50:41

    共 5 条回复 >

  • 木子舟义
    2015-12-13 14:25:25

    你也确定用var p = Object.create(o);  给 p.a = 1; 是赋值到o.a上?

    proto

    属性a b都是原型链上的,执行的时候是去遍历原型对象,不是遍历实例对象,这就是为啥原型链强大的原因

    2015-12-13 14:30:58

    共 4 条回复 >

  • 木子舟义
    2015-12-13 14:24:37

    你确定用var p = new o;能 new出来?

    proto

    new不出来,得把o改造成函数

    2015-12-13 14:26:58

    共 1 条回复 >

JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281100 学习 · 1020 问题

查看课程

相似问题