javaScript基礎
? 對象其他部分 [理解]
-
自定義構造函數創建對象[掌握]
//繼續簡化 自定義構造函數 function People(uName, uAge) {this.uName = uName;this.uAge = uAge; } // 如何通過自定義構造函數創建對象? var zs = new People('張三', 20); console.log(zs);
- 注意事項:
- 自定義構造函數的命名規則要遵守帕斯卡命名法(單詞的首字母大寫)
- 注意事項:
-
this關鍵字
this 關鍵字到底指的是誰? 口訣: 誰調用函數(構造函數), this 就指向誰(就是誰)普通函數中的 this 關鍵字指向的就是 window對象 function fn() {console.log(this); } window.fn(); // 因為我們平時調用函數時候, window對象省略在對象的方法中 this 關鍵字指向的就是 當前這個對象 var obj = {//方法eat:function() {console.log(this); // 指向的是當前對象} }obj.eat();
-
new關鍵字執行過程
- 先執行 new 關鍵 ----> 內存中開辟一個空間(空對象)
- 將用戶的實參信息通過形參賦值給 空對象中 this 關鍵字
- 給 this 關鍵字 賦值
- 將this 關鍵字 最后指向 創建的對象
-
遍歷對象[掌握]
語法: for(鍵 in 對象) {對象[鍵]; }例如:var obj = {uname: 'asd',age : 34,uheight: 180,color: 'red',weight: 70}// key 是一個變量, 這個變量中保存的就是 obj 對象中的所有屬性for(key in obj) {//獲取對象的值console.log('屬性名:' +key + '對應的值:' + obj[key]);}
-
instanceof關鍵字[以了解為主]
instanceof : 判斷當前對象 是否是 某個構造函數創建的 (判斷孩子是不是某個人的骨肉) typeof : 獲取數據類型
-
簡單數據類型在內存中的存儲方式
簡單數據類型,在內存的棧上保存的, 棧區中保存的就是變量的一個具體的值
-
復雜數據類型在內存中的存儲方式
復雜數據類型(對象), 在內存的堆上保存的, 復雜數據類型在內存中保存的是一個地址
function Person ( name, age ) {this.name = name; this.age = age;this.sayHi = function () {console.log( "你好" );}}var p1 = new Peron( "張三", 18 );function getperson ( person ) {person.name = "李四";}getperson( p1 );console.log( p1.name ); 思考: p1 的name值是什么?
1. 知識點-內置對象
-
為什么要學內置對象?
內置對象中已經幫助我們是實現相關的方法(數學, 時間 ....), 提高代碼效率
-
什么是內置對象?
內置對象: js中本身已經具有的對象, 不需要我們手動創建,直接調用.
-
內置對象要學什么?怎么學?
? 各種方法 ? 屬性 學習的方式: 通過查詢手冊實現 手冊地址: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript
2. 知識點-內置對象Math
-
Math內置對象
提供了與數學操作相關的方法和屬性
-
屬性: Math.PI 獲取圓周率
獲取圓周率
-
方法:
-
求一個數字的冪數(幾次方)
Math.pow(x, y)
-
獲取一組數字的最大值
Math.max()
-
獲取一組數字中的最小值
Math.min();
-
求一個數字的絕對值
Math.abs();
-
求一個數字的四舍五入運算
Math.round()注意一點: 該方法返回的是一個整數
-
隨機數
Math.random() 大于等于 0 小于 1
-
Math.floor()
-
Math.ceil()
-
-
3. 知識點-內置對象數組
-
數組難到也是對象?數組也是內置對象?
var ary = new Array();
-
數組添加值 push() unshift()
-
push() 方法
通過 push()方法可以向數組中同時添加一個或者多個值,添加到數組的末尾
-
unshift()方法
通過 unshift()方法可以向數組中同時添加一個或者多個值, 添加到數組的開始位置
-
-
刪除(取值)數組中的值 pop() shift()
-
pop()方法
pop() 方法從數組中刪除某個值, 從數組中從后向前刪除, 返回值就是刪除的值
-
shift()方法
shift() 方法將數組中某個值刪除, 從數組的開始位置向后刪除,返回的結果也是刪除的值
-
-
翻轉數組 reverse()
reverse() 翻轉數組, 返回值就是翻轉后的數組
-
join()
將數組中的值以一個分割符拼接成一個字符串, 返回的結果就是一個字符串
-
indexOf()、lastIndexOf()
-
indexOf()方法
indexOf() 從數組中查找值對應的索引位置, 如果找到這個值,那么就返回值對應的索引位置, 如果沒有找到,返回的結果就是 -1indexOf()可以設置第二個參數, 第二個參數可以設置也可以不用設置,代表的意思從哪開始找, 如果找到則返回對應的索引,否則返回-1
-
lastIndexOf() 方法
lastIndexOf() 從數組中查找值對應的索引位置lastIndexOf()也可以設置第二個參數, 二個參數的作用與indexOf()中第二參數的作用一樣.
-
區別
- indexOf() 從數組的前 向 后 找
- lastIndexOf() 從數組的后向前找
-
補充: 判斷一個值是不是數組
Array.isArray(obj)
-
4. 知識點-內置對象字符串
-
字符串特性:
不可變特性, 字符串在內存中的位置空間. 在程序中大量拼接字符串會有什么問題? ---> 浪費內存 (由于字符串不可變特性)
-
獲取指定位置處的字符
charAt(索引值) 注意: 字符串中的索引位置從 0 開始
-
截取字符串 [重點]
? slice(startIndex[, end])// slice()// console.log(str.slice(6));// slice(starindex);//參數starindex代表從字符串中哪個位置開始截取,默認是到字符串的結尾處// console.log(str.slice(6, 8));// slice(startindex, endindex)// 參數: startindex 從哪開始截取// 參數: endindex 截取字符串到哪結束[不包括這個值]? substring(startIndex[,end]); //substring()截取字符方法與slice方法一樣? substr(startIndex[, length])// substr(startindex, length)// 參數: startindex 代表從字符串的哪個位置開始截取, 默認到字符串的結束位置 // 參數: length 代表的是要從字符串中一共截取多少個
-
拼接字符串
concat() ====> 將字符串拼接到一塊, 返回一個新的字符串
-
替換
replace('targetElement', 'element') ====> 返回的結果也是字符串
-
去除空白
trim() ====> 將字符串的首尾空白去掉
-
indexOf(字符) lastIndexOf(字符)
indexOf(字符) : 都是用來獲取字符串中對應字符的索引位置, 從左向右查找, 如果找到那么就直接返回對應的索引位置, 如果沒有找到,那么就返回-1lastIndexOf(字符) : 都是用來獲取字符串中對應字符的索引位置, 從后向前找, 如果找到那么就直接返回對應的索引位置, 如果沒有找到,那么就返回-1備注: 1. indexOf(字符) 和 lastIndexOf(字符) 支持第二參數的設置,如何設置了第二個參數,那么代表從指定的位置起,向后(向前)查找
====> 將字符串的首尾空白去掉
-
indexOf(字符) lastIndexOf(字符)
indexOf(字符) : 都是用來獲取字符串中對應字符的索引位置, 從左向右查找, 如果找到那么就直接返回對應的索引位置, 如果沒有找到,那么就返回-1lastIndexOf(字符) : 都是用來獲取字符串中對應字符的索引位置, 從后向前找, 如果找到那么就直接返回對應的索引位置, 如果沒有找到,那么就返回-1備注: 1. indexOf(字符) 和 lastIndexOf(字符) 支持第二參數的設置,如何設置了第二個參數,那么代表從指定的位置起,向后(向前)查找