老师,请问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回答

好帮手慕粉

2020-09-02

同学你好,关于同学的问题回答如下:

1、在构造函数中,属性需要挂载到this上,实例化出来的对象才能访问到。这里的a和fn2没有挂载到this上,所以访问不到,是undefined,但是sub函数能访问到:

http://img.mukewang.com/climg/5f4f4cf609c3930706040378.jpg

http://img.mukewang.com/climg/5f4f4cf7099b857006230124.jpg

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

http://img.mukewang.com/climg/5f4f4d8b09b3fff106110384.jpg

同学如果忘记了可以回顾下视频:https://class.imooc.com/lesson/791#mid=19893

如果我的回答帮助了你,欢迎采纳。祝学习愉快~

1

福徐贵

2020-09-02

http://img.mukewang.com/climg/5f4f4e4209e9dac606650326.jpg

0

0 学习 · 14456 问题

查看课程