请老师检查一下,不知道理解的对不对

请老师检查一下,不知道理解的对不对

<!DOCTYPE html>

<html lang="en">

  <head>

    <meta charset="UTF-8" />

    <title>Document</title>

  </head>

  <body>

    <script type="text/javascript">

      var Person = (function() {

        // 此处填写代码

        //局部变量内部声明的变量,用闭包会保存值一直存在,类似私有变量

        var instance = new Object(); //产生一个空值用于接收 子函数返回的值

        return function() {

          // 此处填写代码

          //判断值是否有效如果有效就等于自身,如果空值就赋值

          if (instance) {

            this.name = 'zhangsan';

            this.id = Math.random();

          } else {

            instance = this;

          }

          return instance;

          //将处理好的对象返回出去,在函数的调用中处理的一直是这个值,因此会等于true

        };

      })();

      var Person1 = new Person();

      var Person2 = new Person();

      alert(Person1 == Person2);

    </script>

  </body>

</html>



正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕夭夭 2019-10-22 19:26:54

你好同学,解答如下:

1.参考如下注释进行修改和理解:

http://img1.sycdn.imooc.com//climg/5daee6be09a24f9210010799.jpg

2.第一问理解的正确。

3.第二问没有理解同学的意思,请详细描述一下。另外,new实例化出来的是一个对象,并不是一个函数。

4.第三问你可以说p()()和(p)()效果上是类似的,但是不能使用全等===判断比较哦。因为函数是引用类型,它们两个内存地址不一样,不相等哦。

祝学习愉快,望采纳。

  • 提问者 慕前端2064318 #1
    第三个问题:(p)() 就是闭包,可以形成私有变量? p()()就不可以形成私有变量 是吗? 第二个问题:通常我们写闭包的时候 会用一个新的变量去接收之前的函数,比如 var p=X(), p()//这样的调用方式 那么问题是 var p=new x() 是不是就已经完成了之前的将函数赋值给变量的操作 还是说 var a=(X(){Y=asasd renurn FN(){}})() 这已经完成了一个闭包?变量a的返回值就是我们想要的值?函数x内部生成的变量就是私有变量
    2019-10-23 10:51:09
  • 好帮手慕夭夭 回复 提问者 慕前端2064318 #2
    很抱歉同学,老师没有理解你的意思,可以写一下代码举例子说明吗,以便老师准确的为你解答。
    2019-10-23 17:22:37
提问者 慕前端2064318 2019-10-22 17:56:36

补充的问题:

Person1的时候 函数P已经直径过一次了, 所以instanse是有值的,

所以Person2 的时候instanse已经是有值的了 就直接返回它内部的值

所以 P1=P2 是成立的?这种理解对吗?


问题2:实例化函数P的时候 是不是就相当于

Person1 = new Person();-----相等于---->Person1 =Person();  Person1 ()

因此  私有变量得以保存?

问题3:     下面这种理解方法成立吗?

p()()===(p)()


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师