老师请问我这样去创建单例模式对吗?

老师请问我这样去创建单例模式对吗?

因为我发现在上一个问题中代码写错了

如果我在上一个问题中补充回答的话,好像是老师会看不到问题

所以我重新提问一下~不好意思哈~

--------------------------------------------------------------

因为静态属性全局只有一份,所以我提前new出来一份HistoryKeyword实例,然后在构造函数中return出去

这样创建单例模式对吗?

请老师解答一下~谢谢老师~

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

正在回答

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

5回答

这个好像也可以,不过你需要自己测试下,确保一下

  • MasonM 提问者 #1
    老师我刚刚测试了一下,发现了一个错误~不过总体思路是对的~麻烦老师看一下我的新回答~谢谢您~
    2020-05-28 10:35:36
  • MasonM 提问者 #2
    老师您好~我发现了一个问题,在我再一次改好代码之后,我发现了一个问题,想了很久,也没想出来,老师可以帮我看一下吗?在新的回答中~
    2020-05-28 12:57:01
  • 7七月 回复 提问者 MasonM #3
    这个应该没问题,和课程的那种通用的是一样的原理
    2020-05-28 13:15:31
提问者 MasonM 2020-05-28 20:31:11

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

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

的确返回的是空数组,但是在缓存中是有数据的

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

  • 7七月 #1
    这应该是this指代的问题,你这个里面的this应该不是同一个对象
    2020-05-28 21:54:15
  • 提问者 MasonM 回复 7七月 #2
    那就有点迷了~~~ 还是非常感老师您的耐心解答~~ 我再琢磨一下哈~ 请问老师有没有一些好的学习调试的方法可以介绍一下呢~
    2020-05-28 22:39:43
  • 提问者 MasonM 回复 7七月 #3
    那就有点迷了~~~ 还是非常感谢老师您的耐心解答~~ 我再琢磨一下哈~ 请问老师有没有一些好的学习调试的方法可以介绍一下呢~
    2020-05-28 22:41:16
提问者 MasonM 2020-05-28 13:33:37

老师这是最新的代码~~~最新的~~


---------------------------------------------------

我一开始这样写,

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

我直接在静态属性这去new 一个实例出来,然后再构造函数中返回,这样会造成一个问题

就是如果去获取keywords的数据的时候,会是一个[] 空数据,搞不明白为啥

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


--------------------------------------------------------------------------------------

于是我就再改了一下,改成类似老师那种,跟老师的代码原理一样

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

然后代码就可以有正常的效果

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

就是不太懂,为啥第一种方法会不行呢?

还请劳烦老师帮我解答一下~~

非常非常感谢您~


  • 7七月 #1
    我觉得这个问题你应该断点调试下,进一步分析在你的history.get里的具体情况。另外,你代码不全,没有标明你的history是怎么来的。
    2020-05-28 19:25:09
  • 提问者 MasonM 回复 7七月 #2
    这个history就是在Page页面的js文件头部实例化对象~ 这个我也的确断点调试过了,因为我的断点调试水平不怎么样~所以调试了之后也一头雾水~ 所以在提问了一下~
    2020-05-28 19:28:26
  • 7七月 回复 提问者 MasonM #3
    原来返回的是this,this才可以实例化。你现在已经是实例化的了,还实例化?
    2020-05-28 19:31:48
提问者 MasonM 2020-05-28 13:01:14

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

由于我改成这样子去创建单例模式 , 但是在我onLoad去获得keywords的值时

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

这里获取的竟然是一个空数组

原因应该是我创建的单例模式有问题

之前学java的时候,也是用类似的方式

提前在类中实例化一个对象,每一次都返回这个对象来实现单例模式

为啥我这里就会有问题呢?

请老师帮我解答一下~谢谢~


提问者 MasonM 2020-05-28 10:43:38

一开始代码是这样的

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

我写错了,本来想在构造函数中,把静态属性history给return出去.结果写错了,写成了

return this.history

于是在测试代码的时候出现错误

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

然后我就把代码改正确之后,改成

http://img1.sycdn.imooc.com//climg/5ecf24ab0986bc0c07340376.jpg这样才能正确return 静态属性history

然后我再次测试代码

http://img1.sycdn.imooc.com//climg/5ecf24e5096f1c0406720470.jpg这个时候才能正确创建单例模式

七月老师,请问我这样测试出来的结果对吗?

这样就算是正确创建单例模式了吗?

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

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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