javascript - this指向的问题;
阿神
阿神 2017-04-11 12:01:07
0
5
401


 function Person(name){
        this.name = name;
    }
    Person.prototype.each = function () {
        console.log('吃东西');
    }
    
    var xiaoming = new Person('小明')

实例对象的时候this指向Person构造函数;不是很明白this是怎么样指向Person构造函数,this是一个对象,又不是实例的一个属性怎么样指向Perosn构造函数呢?大神们能不能给小弟画一下图说明一下;

阿神
阿神

闭关修行中......

全部回覆(5)
黄舟

Javascript中使用new时,实际上做了下面几件事:
1、创建一个新的对象,这个对象的类型是object;
2、设置这个新的对象的内部、可访问性和[[prototype]]属性为构造函数(指prototype.construtor所指向的构造函数)中设置的;
3、执行构造函数,当this关键字被提及的时候,使用新创建的对象的属性;
4、返回新创建的对象(除非构造方法中返回的是‘无原型’)。

this并不是指向构造函数,而是待返回的空对象。只是this有个__proto__属性会执行构造器的prototype属性。

PHPzhong

构造函数是个函数,this指向的是个对象。
this怎么能指到构造函数去啦?
调用构造函数时,除非构造函数显式返回一个对象,否则将返回新生成的实例对象。(详见javascript的秘密花园)
关于构造函数调用时的问题,可以看<javascript高级程序设计第五章>
我的答案里就有回答过这个问题的答案。有兴趣点开看下,没有就算啦,手机看的,不可能说太多。

迷茫
  1. 什么叫“实例对象的时候”?如果我的语文水平没有下滑的话,在我的理解里实例对象是个具体的事物,而的时候一般是拿来修饰持续性动作的……你这问题问的我看不太懂……

  2. 假如你的问题是“创建实例对象的时候”,这语法上没啥问题了,但是和后面感觉又接不上……
    “创建实例对象的时候this指向Person构造函数”?不对吧……那时候this指针是指向这个实例对象自己的啊……为什么你会觉得是指向Person构造函数,还是说我理解的不对?

PHPzhong

楼主似乎对this理解不够深,推荐你看这篇博客JavaScript中的this陷阱的最全收集--没有之一来理解javascript中的this,而且里面也有提到prototype this,希望可以帮到你~~

巴扎黑

this是一个对象没错 但是this水性杨花啊 谁用它它就指谁 跟在哪创建没有关系。所以实例化一个对象的时候 this指正在创建的对象

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!