为什么这样写不行呢? 还是报false

为什么这样写不行呢? 还是报false

  var Person = (function() {
      // 此处填写代码
      var instance = null;
      if(instance){
          return instance;
      }
      return function() {
          // 此处填写代码
          this.name = 'zhangsan';
          this.id = Math.random();
          return instance = this;
      }
  })();
  var Person1 = new Person();
  var Person2 = new Person();
  console.log(Person1 == Person2);


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

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

5回答
樱桃小胖子 2019-10-07 10:59:41

不知道同学这个问题中的疑惑解决了没有,如果还有疑问,建议再详细系统的描述一下哦

祝学习愉快!

NeverBy 2019-10-03 11:00:37

代码中: Person返回函数function(){}

var Person1 = new Person(); //实例化 (Person返回的function(){}) 的对象 

js中的var a = new A;与var a = new A()的区别==>这里的解释 https://www.cnblogs.com/Tohold/p/9021063.html

NeverBy 2019-10-03 10:36:40

    var Person = (function() {

        var instance = null; //(instance=null)==>false

        return function() {

            if (instance) { //如果instance为true,也就是被赋值了,就直接返回instance

                return instance;

            }

            //上面的if判断结果为false才会执行下面的代码

            // 添加对象属性;

            this.name = 'zhangsan';

            this.id = Math.random();

            return instance = this; //匿名对象this赋值给instance,返回instance

        }


    })();

    var Person1 = new Person(); //例化对象

    var Person2 = new Person; //

    console.log(Person1);

    console.log(Person2);

    console.log(Person1 == Person2);

一:判断的位置的问题:

你再运行下这段代码,我加了注释

二:关于new Person()和new Person的问题:

我也有点晕,


  • NeverBy #1
    代码中 函数Person返回函数function(){}; var Person1 = new Person(); //实例化 (Person返回的function(){}) 的对象 js中的var a = new A;与var a = new A()的区别==>这里的解释 https://www.cnblogs.com/Tohold/p/9021063.html
    2019-10-03 10:59:13
  • 提问者 Sieg_ 回复 NeverBy #2
    非常谢谢,但是这个博客看了还是感觉没说清啥,我再找找看相关资料.
    2019-10-04 11:55:46
  • NeverBy 回复 提问者 Sieg_ #3
    不客气,假期结束估计慕课老师要面临好多问题~~~
    2019-10-04 12:39:39
NeverBy 2019-10-01 21:27:32
var Person1 = new Person;
var Person2 = new Person;

这里Person是自执行函数的返回值,不加();

NeverBy 2019-10-01 21:21:38
        return function() {
            // 此处填写代码
            this.name = 'zhangsan';
            this.id = Math.random();
            return instance = this;
        }

这里 返回的 function() 中没有做判断 每次都会执行 this.id=Math.random();

所以每次执行的结果都不同

  • 提问者 Sieg_ #1
    谢谢你同学! 可是我把 if(instance){ return instance; } 放到下面的return block里,就可以了,不报错了. 还是没闹明白. o(╥﹏╥)o
    2019-10-03 09:34:15
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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