老师,请问fn1方法里的a和fn2方法,为什么在test实例化之后是显示undefined?
来源:5-3 选择练习
sheep121
2020-09-02 15:28:31
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
function fn1(){
var a=1;
function fn2(){return console.log(a);}
this.sub=function(){return fn2();};
}
var test=new fn1();
console.log(test.a);
</script>
</body>
</html>
老师,请问fn1方法里的a和fn2方法,为什么在test实例化之后是显示undefined?还有这种声明写法是混合模式吗?
2回答
同学你好,关于同学的问题回答如下:
1、在构造函数中,属性需要挂载到this上,实例化出来的对象才能访问到。这里的a和fn2没有挂载到this上,所以访问不到,是undefined,但是sub函数能访问到:


2、这个不是混合模式,混合模式是构造函数+ 原型的模式:

同学如果忘记了可以回顾下视频:https://class.imooc.com/lesson/791#mid=19893
如果我的回答帮助了你,欢迎采纳。祝学习愉快~
福徐贵
2020-09-02

相似问题