Js的那些事

2022-02-24 20:18:24 字數 1860 閱讀 9647

1. var array = new array(10); 

直接在控制台看一目了然,上圖:

可以看到array裡面是 (10)[empty*10],也就是說new array(10);只是生成乙個長度是10的空陣列。

再看這個控制台結果,繼續上圖:

接下來說一下型別轉換的兩個操作,+和-運算
對於 「+」 如果左運算元或右運算元不是基本資料型別(primitive)時,會對其進行toprimitive轉換,這樣,左運算元和右運算元都是基本資料型別了,但是如果左右兩邊的資料型別不一致該怎麼辦呢?這就涉及到乙個優先順序的問題,低優先順序的資料型別會主動轉換為和高優先順序一樣的資料型別,然後再進行相加操作。它們的優先順序關係為:string > num > boolean,所以就會存在兩種相加操作:字串拼接和數字相加。例如:

"1" + 1;//"11"

1 + true;// 2

"1" + true// 相當於 「1」+「true」="1true"

對於「-」操作就簡單的多了,只是進行數值相減。 對於非數值型別的左右運算元都進行tonumber,然後再進行數值相減運算。

"1" - 1;//0

"1" - true //0

1 - "true" // 0

//

const o =

//};

//alert(o.say());

//我叫大海

//說明:繫結this是有由方法如何被呼叫所決定的而並不是函式定義所決定的,理解這點非常重要。也就是說這裡的this繫結到o上

//並不是因為say是o的屬性,而是因為say直接由o呼叫,所以this才綁在了o上。那如果把同乙個函式賦值給乙個物件又會怎麼?例如

//const sp = o.say;

//alert(sp());

//我叫

//由於呼叫函式的方式所以js並不知道原始函式是在o中定義的,所以this將會綁上undefined

//const o =

//return '我叫:'+getreversename();

//},

//};

//alert(o.greetbackwards());

//我叫: 這裡為什麼不是「我叫:大海」?? 因為調o.greetbackwards()時裡面又調了乙個

//getreversename() 所以this綁在greetbackwards上了而不是o,為了解決這種問題常見的方式是把this賦值給乙個變數暫存 例如

const o =

return

'我叫:

'+getreversename();

},};

alert(o.greetbackwards());

//我叫:大海

再看下面例子:

const bruce =;

function greet()

alert(greet()) //我叫

alert(greet.call(bruce));

//我叫大海 這裡對call不做過多解釋,上篇文章已說過。可以看到call方法在呼叫函式時允許給this繫結乙個物件

關於js陣列的那些事

參考文章 1.基本操作方法 2.js陣列的三大屬性 a.length 屬性 length表示陣列的長度,從0開始。與其他的語言不一樣的地方是,陣列的長度是可以變化的。不存在陣列越界的情況,但是會出現陣列元素丟失,而且就算後面恢復陣列的長度,也無法收回。舉個列子就很明白了。而且length不但可以顯示...

JS 中 call apply bind 那些事

回 雖然網上有很多關於這方面的部落格和文章,但還是決定寫一篇自己對這方面知識的理解。01 作用 首先問個問題,這三個函式的存在意義是什麼?答案是改變函式執行時的上下文,再具體一點就是改變函式執行時的this指向。有了這個認識,接下來我們來看一下,怎麼使用這三個函式。舉個栗子 function per...

Js內建物件那些可怕的事

內建物件number parseint 整數 parsefloat 浮點數 isnan 判斷是不是nan 返回布林值 tofixed value 設定保留幾位小數,且會四捨五入返回字串 number.max safe integer 最大數 number.positive infinity 無限正數...