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.内部函数在搜索这两个变量是,只会搜索到其活动对象为止;
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
学习js,你要记住一点,理论上不存在所谓的对象的方法这个概念,一个对象的方法只是它的这个属性的值是对一个函数的引用,决定this的是这个函数对象被调用的情况,也就是所谓的上下文。详细内容我建议你看一本《You dont know js》中对这个问题的解释,非常清楚也很深入。
不管是什么this,都是根据上下文执行环境确定的。运行的时候才能确定最终的this指向。
你这个例子中原型上的this,是指向新创建的实例查找实例有没有age,结果是有就输出了。在实例没找到就会像原型链上找
可以看下这篇文章this 的工作原理,有很详细的介绍,希望对你有帮助