2021.06.16(practice)
+true; !"Lydia";
result:+號會將true變為1,+號傾向於返回一個值,但是!傾向於返回一個布林值,因為"Lydia"是真實存在的,所以取反之後是false。
const bird = { size: 'small' } const mouse = { name: 'Mickey', small: true }
result:因為mouse通過點的形式呼叫bird的前提是mouse有這個屬性,但是它沒有,所以是無效的,但是bird.size是真實存在的,通過[]呼叫裡面存放的是small這個字串
let c = { greeting: 'Hey!' } let d d= c c.greeting = 'Hello' console.log(d.greeting)
result:輸出是 'Hello',因為在JS中物件是一種引用型別,d和c指向的是同一片記憶體區域,所以對c進行修改,d指向的內容也發生了改變。
let a = 3 let b = new Number(3) let c = 3 console.log(a == b) console.log(a === b) console.log(b === c)
reuslt:輸出是 true、false、false。之所以是這樣,當我們是用==符號時,系統會檢測兩邊是否有相同的值,有時候還會對值進行轉換的比較,但是如果我們使用===符號時,不僅要求兩邊要有相同的值,還要求有相同的型別,new Number出來的是一種物件,其身上不僅僅有值,還有一堆額外的功能。
class Chameleon { static colorChange(newColor) { this.newColor = newColor return this.newColor } constructor({ newColor = 'green' } = {}) { this.newColor = newColor } } const freddie = new Chameleon({ newColor: 'purple' }) freddie.colorChange('orange')
result:輸出是TypeError,之所以是錯誤,原因在於Chameleon是一個類,colorChange是類中的靜態方法,類中的靜態方法只能被構造器使用,不能被例項進行呼叫。
let greeting greetign = {} // Typo! console.log(greetign)
result:輸出的是{},表面上看greetign存在拼寫錯誤,應該報錯才對,但是這是在全域性作用域下的,實際上是進行了賦值的,所以打印出的是{}.
function bark() { console.log('Woof!') } bark.animal = 'dog'
result:正常執行!之所以會這樣,是因為JS中的函式也是一類特殊的物件,所以也可以通過點的形式新增屬性。
function Person(firstName, lastName) { this.firstName = firstName; this.lastName = lastName; } const member = new Person("Lydia", "Hallie"); Person.getFullName = function () { return `${this.firstName} ${this.lastName}`; } console.log(member.getFullName());
result:TyprError Person是一個建構函式,不能像普通的物件給建構函式新增屬性,要想給建構函式的例項新增屬性,可以通過原型的方式來實現。
DOM事件流的三個階段分別是事件捕獲階段、處於目標階段、事件冒泡階段。事件捕獲的三個階段圖示:
2021-06-17 09:32:58