1.首先,我們先來了解一下js的getownproperty和in和object.keys()以及getownpropertynames
hasownproperty()
方法會返回乙個布林值,指示物件自身屬性中是否具有指定的屬性(也就是,是否有指定的鍵)。
object.keys()
方法會返回乙個由乙個給定物件的自身可列舉屬性組成的陣列,陣列中屬性名的排列順序和正常迴圈遍歷該物件時返回的順序一致 。
for...in
迴圈只會遍歷可列舉屬性,以及從其原型繼承過來的屬性
object.getownpropertynames()
方法返回乙個由指定物件的所有自身屬性的屬性名(包括不可列舉屬性但不包括symbol值作為名稱的屬性)組成的陣列。
2.
var anotherobject =;object.prototype.create = function
(elem);
o.prototype =elem;
return
newo();
}var myobject =object.create(anotherobject);
console.log(anotherobject.a);//2
console.log(myobject.a);//
2 console.log(anotherobject.hasownproperty("a"));//
true
console.log(myobject.hasownproperty("a"));//
true
通過以上我們可以看出myobject雖然有a的值,但是沒有a這個屬性,它這個屬性是anotherobject那裡繼承過來的。
3.但是我們如果執行以下的**,結果就不一樣了
myobject.a++;//隱式遮蔽console.log(anotherobject.a);//2
console.log(myobject.a);//
3console.log(myobject.hasownproperty('a'));//
true
這是因為myobject.a++就相當於myobject.a = myobject.a+1;所以myobject就有了a的屬性,這個稱為隱式遮蔽
js 隱式轉換
1.數字number與字串string相加的就,最後會得到乙個字串string 1 3 13 2.數字number與字串string相減,最後會得到乙個數字number 1 0 1,s 0 nan 3.數字number與字串string相乘 最後會得到乙個數字number 1 10 10,s 10 ...
js隱式轉換
js基礎資料型別 string number boolean null undefined symbol 當運算子在運算時,如果運算子兩邊的資料型別不一致,那麼cpu就無法進行計算。js的編輯器會自動將運算子兩邊的資料轉換為同一型別,從而讓計算機識別並可以進行計算,這一轉換過程由編譯器自動自行,不需...
js 隱式轉換
其它型別轉換成布林型別 1.未聲名的變數名 undefined false 2.變數名為 null 為空 null false 3.number 0 0.0 0 0 nan false 4.空字串 false 5.其它物件 true 1 其它型別轉換為數值型 number 1.undefined n...