[問題] 物件與protytype有繫節這句話的疑問

看板Ajax作者 (加油加油^^)時間12年前 (2013/05/12 11:57), 編輯推噓5(5011)
留言16則, 3人參與, 最新討論串1/1
var a = 'thisisstring' ; 這是一個簡單的字串值 但是卻可以執行toString() ; // why? --- 當我使用console.log(a) 只有一個簡單的值。 要如何看到所謂的對prototype的繫節? 當我想要看到我有多少方法可以用的時候,看怎麼觀察? 以上 有沒有高手指導一二...感謝 -- 感謝回答,依照討論狀況 a 應該不能算是一個string object 依舊是個string literal,只是如S大所言。繼承了~ 但是還是不懂更細節的事情 另外,老問題 有辦法看到被綁定prototype嗎? 例如說,我們明明知道a有toString可以使用 但是console.log(a)的時候,資訊就完全不足了。 而且,像我console.log($(a))的時候 (jQuery物件) 就可以知道有哪些方法可以使用,有沒有辦法做到類似這樣? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.230.103.250

05/12 12:57, , 1F
因為字串是物件 基本上妳可以透過webkit系browser
05/12 12:57, 1F

05/12 12:58, , 2F
於console檢視該物件的方法列表 應該是最簡單的方法
05/12 12:58, 2F

05/12 13:06, , 3F
如果是自己的物件模型 Object.getOwnPropertyNames()
05/12 13:06, 3F

05/12 13:26, , 4F
字串是String物件的一個實例 因此他繼承了String物件的
05/12 13:26, 4F

05/12 13:27, , 5F
prototype, 而String是一個物件因此他又繼承了Object
05/12 13:27, 5F

05/12 13:27, , 6F
的prototype, 大部分在js中的物件都繼承自Object
05/12 13:27, 6F

05/12 13:28, , 7F
因此 Object 的 prototype 幾乎每個物件或實例都繼承了
05/12 13:28, 7F

05/12 13:45, , 8F
a是基本資料型態不是物件, typeof a => "string"
05/12 13:45, 8F

05/12 13:46, , 9F
有toString可以用是系統暫時產了一個String物件
05/12 13:46, 9F

05/12 13:49, , 10F
String繼承Object的toString也改寫了toString
05/12 13:49, 10F

05/12 13:49, , 11F
Object.prototype.toString.call(a) => "[object String]"
05/12 13:49, 11F

05/12 13:50, , 12F
String.prototype.toString.call(a) => "thisisstring"
05/12 13:50, 12F

05/12 13:53, , 13F
對 應該是基本型態 (汗
05/12 13:53, 13F
※ 編輯: coldollsheep 來自: 36.230.103.250 (05/12 18:04)

05/12 18:07, , 14F
用for/in去枚舉String.prototype 記得加hasOwnProperty
05/12 18:07, 14F

05/12 18:08, , 15F
不過我是建議你不如上網找文件 MDN很好用的
05/12 18:08, 15F

05/12 18:51, , 16F
elba大是正確的 sorry
05/12 18:51, 16F
文章代碼(AID): #1HZnCggn (Ajax)
文章代碼(AID): #1HZnCggn (Ajax)