2017.3.9 对象 函数
1 Javascript擁有七種數據類型,其中分為兩類。原始數據和復雜數據類型。原始數據類型:包括 字符串,數組,數字,布爾值,Null,Undefined。復雜數據類型:包括 對象。
對象是Javascript的核心概念,也是最重要的數據類型。Javascript所有數據都可以視為對象。都可以使用內置的方法。但是除了兩個例外,就是Null和Undefined。因此就會有例如length的屬性,如false.length,'1abc'.length 都不報錯。實際情況是通過包裝對象的方式變換,例如 str是string(基本類型),本身是沒有方法的。
當嘗試把基本類型的str當做對象一樣訪問時,例如:str.length;
解釋器會創建一個臨時的包裝對象,偽代碼:
[[tempObj]] = new String(str);
[[tempObj]].length; // 返回具體的length;
delete [[tempObj]]; // 銷毀臨時對象
重復訪問str.length會重復創建這個臨時對象。
所以str.t賦值可以成功(臨時對象賦值),但再次訪問str.t返回undefined(另外的臨時對象的值),因為每次創建的臨時包裝對象都是不同的。
任何對象都繼承Object.prototype,所以都有Object.prototype中的方法
?
2 舉例表示 (字符串類型)‘123’ 并不是 String(引用)類型的實例
3 創建對象的方法有
(1) var o1 = {};
(2) var o2 = new Object();
(3) var o3 = Object.create(null); null表明不繼承任何對象,
如要繼承某對象oT,則要改為 var o3 = Object.create(oT.prototype) 此時查看o3.__proto__ == oT.prototype ,表明o3 繼承了oT;因此Object.create可表示克隆一份oT.prototype的內容賦值給o3;
4 對象的所有鍵名都是字符串,加不加雙引號都可以。對象的鍵值如果是英文,則必須加引號,否則會當成變量處理。如果是數字,加了引號則當成字符串處理,不加引號當成數字類型處理。
5 Javascript使用delete來刪除屬性。delete操作符只能用來刪除對象本身的屬性,而不能用于刪除繼承自原型的屬性。delele也可以用于刪除一個不存在的屬性,不過也不會報錯,會返回true
6 ?for...in循環用來遍歷一個對象的所有屬性。(es 6 中用強大的for-of循環
for (var value of myArray) {console.log(value);})
7 ?查看一個對象本身的所有屬性,可以使用Object.keys 方法。
8 ?JavaScript中的傳值分為兩種方式,按值傳遞 與 按引用傳遞。基本類型都是按值傳遞,引用類型是按引用傳遞。在函數中用的較為明顯。
a 基本類型按值
var a = 1;
function fn(num) {
num = 5;
}
fn(a);
console.log(a); //1
b 引用類型按引用
var arr = [2, 5];
function fn(Arr) {
Arr[0] = 3;
}
fn(arr);
console.log(arr[0]); //3
注意,如果函數內部修改的,不是參數對象的某個屬性,而是替換掉整個參數,這時不會影響到原始值。
var arr = [2, 3, 5];
function fn(Arr) {
Arr = [1, 2, 3];
}
fn(arr);
console.log(arr); // [2,3,5]
上面的問題可按照函數執行時的AO(VO)對象考慮,
AO = {
arguments:{
Arr:傳來的為arr,但是后來替換為了[1,2,3],所以不影響變量arr
}
?
?
函數:
1 ? ? 如果有同名參數,則取最后面出現的那個值,如果未提供最后一個參數的值,則取值變成undefined。
function keith(a, a) {
return a;
}
console.log(keith(1, 3)); ?//3
console.log(keith(1)); ? //undefined
此時arguments.length同樣是2,但是變量a取第二個
?
http://www.cnblogs.com/Uncle-Keith/p/5776159.html
http://www.cnblogs.com/Uncle-Keith/p/5792485.html
轉載于:https://www.cnblogs.com/FineDay/articles/6525331.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的2017.3.9 对象 函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cocos2dx JS 层(Layer)
- 下一篇: 探究 UIViewController