function F() { //自定義資料型別 this.name = "自有屬性"; } F.prototype.name = "繼承屬性";
object.hasOwnProperty(propertyName);
引數說明:propertyName 參數列示要檢測的屬性名稱。var f = new F(); //範例化物件 console.log(f.hasOwnProperty("name")); //返回true,說明當前呼叫的 name是自有屬性 console.log(f.name); //返回字串“自有屬性”凡是建構函式的原型屬性(原型物件包含的屬性),都是繼承屬性,使用 hasOwnProperty() 方法檢測時,都會返回 false。但是,對於原型物件本身來說,這些原型屬性又是原型物件的自有屬性,所以返回值又是 true。
var d = Date; console.log(d.hasOwnProperty("toString")); //返回false,說明toString()是Date的自有屬性 var d = Date.prototype; console.log(d.hasOwnProperty("toString")); //返回true,說明toString()是Date.prototype屬性hasOwnProperty() 方法只能判斷指定物件中是否包含指定名稱的屬性,無法檢查物件原型鏈中是否包含某個屬性,所以能夠檢測出來的屬性必須是物件成員。
var o = { //物件直接量 o1 : { //子物件直接量 o2 : { //孫子物件直接量 name : 1 //孫子物件直接量的屬性 } } }; console.log(o.hasOwnProperty("o1")); //返回true,說明o1是o的自有屬性 console.log(o.hasOwnProperty("o2")); //返回false,說明o2不是o的自有屬性 console.log(o.o1.hasOwnProperty("o2")); //返回true,說明o2是o1的自有屬性 console.log(o.o1.hasOwnProperty("name")); //返回false,說明name不是o1的自有屬性 console.log(o.o1.hasOwnProperty("name")); //返回true,說明name不是o2的自有屬性