javaScript中原型模式中的this向的是哪里?
PHPz
PHPz 2017-04-11 11:52:36
[JavaScript讨论组]
 function Person(age){
    this.age=age;
 }
 Person.prototype.getAge=function(){
    return this.age;
 }
 //调用函数
 var person=new Person(9);
 alert(person.getAge());//9

各位大神好,本人小白一枚。望能请教下,原型模式中的this指的是哪里(代码如上所述)?
按照我的理解,调用Person函数后,函数中的this应该指向的是调用它的对象new Person(9),而这个对象中拥有age属性,为该对象所特有;Person.prototype应该是另作为一个对象出现的,那么该对象就有自己的this来表示当前的对象Person.prototype.然而该this对象中没有age属性,两者的this应该不是同一个对象,那么调用后,就不应该显示为9.可实际确实显示为9???该如何理解?

高程中这么说,每个函数在被调的时都会自动取得两个特殊变量:this和arguments.内部函数在搜索这两个变量是,只会搜索到其活动对象为止;

PHPz
PHPz

学习是最好的投资!

全部回复(3)
迷茫

学习js,你要记住一点,理论上不存在所谓的对象的方法这个概念,一个对象的方法只是它的这个属性的值是对一个函数的引用,决定this的是这个函数对象被调用的情况,也就是所谓的上下文。详细内容我建议你看一本《You dont know js》中对这个问题的解释,非常清楚也很深入。

ringa_lee

不管是什么this,都是根据上下文执行环境确定的。运行的时候才能确定最终的this指向。
你这个例子中原型上的this,是指向新创建的实例查找实例有没有age,结果是有就输出了。在实例没找到就会像原型链上找

PHP中文网

可以看下这篇文章this 的工作原理,有很详细的介绍,希望对你有帮助

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号