# [JavaScript] 基礎
###### tags: `JavaScript`
### 命名
- **內建物件(class)** `PascalCase`
- **屬性、方法** `camelCase`
- **常數** 全部大寫 `Math.PI`
- **事件** 全部小寫 `click` `readystatechange`
---
### 運算子
- `+`(加)
- `-`(減)
- `*`乘
- `/`(除)
- `**`(次方)
- `?:`三元運算子
---
### 資料型態
| 資料型態 | 說明 |
| -------- | -------- |
| undefined | 未被賦值/預設值 |
| null | 未知的值/空值 |
| boolean | 布林值 |
| number | 數字 |
| string | 字串 |
字串值須用引號包裝,下列範例又稱字串模板
```javascript
//雙引號
var name = "winnie";
//單引號
var number = '123';
//反引號,可不用+號串起字串和變數,但變數需用${}包裹,${}內可單放變數、表達式
var str = `我的名字是${name},編號${number}`
```
> **如何分辨資料的型態:** `typeof`
---
### 物件、內建物件(class)
- **何謂物件?**
- 自己宣告的變數
- 物件的屬性
- 所有的HTML標籤
- 事件
- **物件的屬性(名詞 | 形容詞)和方法(動詞)**
? addEventListener()
? parseInt()
? innerHTML = 屬性值
- **常用內建物件**
- Number(double)
- String
- Boolean
- Array (同一個陣列可放入各種型態)
- Date
- Math
- RegExp (正規表示法)
- Object (無法辨認的型態都當作object)
- 還有很多,以上是常使用的
- **建構子**
```javascript
class Person{
//一個class只能有一個constructor,必須用constructor命名
//constructor內的屬性不須宣告型態
//constructor(屬性1,屬性2,.......){ }
constructor( name, age, weight){
this.name = name;
this.age = age;
this.weight = weight;
}
//function
displayName(){
console.log(this.name);
}
displayAge(){
console.log(this.age);
}
displayWeight(){
console.log(this.weight);
}
}
```
---
### 繼承
```javascript
class Programmer extends Person{
constructor( name,age, weight, language, **hours**){
super(name,age,weight); //
this.language = language**;
this.hours = hours;**
}
displayLanguage(){
console.log(this.language);
}
}
```
```javascript
//選擇第一個
document.querySelector('#box p')
document.querySelectorAll('#box p')
```