兩種方式,但稍有差別 1,in 運算子 複製程式碼 代碼如下: var obj = {name:'jack'}; 🎜>alert('name' in obj); // --> true alert('toString' in obj); // --> true 可看到無論是name,或是原形鏈上的toString,都能偵測到回傳true。 2,hasOwnProperty 方法 複製程式碼 代碼如下: var obj = {name:'jack'}; 🎜>obj.hasOwnProperty('name'); // --> true obj.hasOwnProperty('toString'); // --> false 原型鏈上繼承過來的屬性無法透過hasOwnProperty偵測到,回傳false。 要注意的是,雖然in能偵測到原型鏈的屬性,但for in通常卻不行。 當然重寫原型後for in在IE9/Firefox/Safari/Chrome/Opera下是可見的。請參閱:for in的缺陷