暫時不考慮es6中symbol,hasownproperty()方法返回的是乙個物件上是否包含乙個指定屬性,如果含有則返回true,如果沒有則返回false。
和in
運算子不同,該方法會忽略掉那些從原型鏈上繼承到的屬性。
這一特性嚐嚐用來檢測乙個物件上是否包含自身擁有的屬性,並且不是從原型鏈上繼承而來的。
如:
o = new object();o.prop = 'exists';
function changeo()
o.hasownproperty('prop'); // 返回 true
changeo();
o.hasownproperty('prop'); // 返回 false
但有時候會出現這樣的情況,自己封裝的物件中包含同名的hasownproperty方法,這時候如果呼叫的話會直接使用自己封裝的方法,為了避免這樣的情況發生,使用下列的方式來避免這種情況:
var foo = ,bar: 'here be dragons'
};foo.hasownproperty('bar'); // 始終返回 false
// 如果擔心這種情況,可以直接使用原型鏈上真正的 hasownproperty 方法
({}).hasownproperty.call(foo, 'bar'); // true
// 也可以使用 object 原型上的 hasownproperty 屬性
object.prototype.hasownproperty.call(foo, 'bar'); // true
常用的使用方式為:
for (var i inman)
}
來自為知筆記(wiz)
hasOwnProperty方法用法簡介
hasownproperty表示是否有自己的屬性。這個方法會查詢乙個物件是否有某個屬性,但是不會去查詢它的原型鏈。示例var obj c console.log obj.hasownproperty a true console.log obj.hasownproperty fn true cons...
說一下JS的hasOwnProperty
for in的時候,它會把物件的屬性 包括原型的屬性 遍歷一遍 例如 有這麼一段 var array array.push 1 array.push 2 array.push 3 for var i in array 此時會輸出什麼呢?當然是0 1 1 2 2 3 但是如果在for in之前加上ar...
自增「 」和自減「 」
int x 10 int j j x 看這邊 system.out.println x int x 10 int j x x 看這邊 system.out.println x 第乙個會輸出11,第二個會輸出10。這是今天偶然看到的,而這個解釋聽起來比較容易理解 x 是乙個表示式,它的值是x,在這個表...