簡體   English   中英

如何使用hasOwnProperty檢查屬性?

[英]How to check property with hasOwnProperty?

hasOwnProperty()僅檢查用戶創建的對象嗎?

var myObj = {};
myObj.hasOwnProperty('toString'); // returns false

我想知道toString()用於哪個原型?

String.hasOwnProperty('toString');// it's too returns false
Object.hasOwnProperty('toString');// it's too returns false

那么,如何檢查toString()或原型鏈中的其他內容呢?

並且,

var myArr = ['a','b','c'];
myArr.hasOwnProperty('length');
// returns true, why? but it is of Array or Object...

hasOwnProperty()僅檢查用戶創建的對象嗎?

它適用於在其原型鏈上具有該方法的所有對象(除了某些宿主對象(即某些IE對象,以及使用Object.create(null)創建的對象以及其他一些特殊方法)之外的所有對象)。

默認情況下, StringObject直接上沒有toString() (盡管您可以分配自己,但是不建議這樣做)。

但是,他們確實將其包含在原型鏈中。 由於使用了匹配的第一個屬性查找,並且String是構造函數,因此它將在Function.prototype上找到它。 您可以通過執行...來確認

String.toString == Function.prototype.toString

其他對象具有自己的toString() ,這取決於在哪種上下文中最有意義的。

 var myArr = ['a','b','c']; myArr.hasOwnProperty('length');// returns true, why? but it is of Array or Object... 

數組確實直接具有length屬性。

如果您想知道對象的原型鏈上是否有可用的屬性,可以使用in運算符...

var hasProp = 'toString' in String;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM