[問題] json function prototype

看板Ajax作者 (Lego)時間9年前 (2015/12/20 01:34), 編輯推噓2(209)
留言11則, 4人參與, 最新討論串1/2 (看更多)
var Item = { list: function() { var obj = function() {}; obj.prototype.sayHello = function() {console.log('Hello')}; return obj; }, }; var a = new Item.list(); 我想請問 為何 我沒辦法 call 到 a.sayHello() 我不知道這該怎下關鍵字去 google 有大大可以解答媽QQ~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.230.76.111 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1450546469.A.50B.html

12/20 02:04, , 1F
因為 new Item.list()拿到的實際上是 list 這個
12/20 02:04, 1F

12/20 02:05, , 2F
constructor回傳的結果,也就是obj這個function
12/20 02:05, 2F

12/20 02:09, , 3F
所以改成new (Item.list()); 或是new (new Item.list())
12/20 02:09, 3F

12/20 02:09, , 4F
;
12/20 02:09, 4F

12/21 02:29, , 5F
照原PO想要的 應該是要改list的value吧wwww
12/21 02:29, 5F

12/21 02:30, , 6F
list: function() { .... }, 這部分
12/21 02:30, 6F

12/21 02:30, , 7F
應該要改成 list: function() { .... }(), 才對
12/21 02:30, 7F

12/21 02:31, , 8F
你要assign給list的應該是匿名function回傳值的obj
12/21 02:31, 8F

12/21 02:31, , 9F
而不是那個function本身啊
12/21 02:31, 9F

12/21 03:10, , 10F
我現在是把return obj改成return new obj然後事情就
12/21 03:10, 10F

12/21 03:10, , 11F
會如我預期的執行 這樣做跟大大們講的會有差嗎@@?
12/21 03:10, 11F
文章代碼(AID): #1MTPKbKB (Ajax)
文章代碼(AID): #1MTPKbKB (Ajax)