js的隱式遮蔽

2022-07-21 05:45:12 字數 1190 閱讀 1259

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...