1.Arguments 對象
javascript對函數的參數幷沒有做嚴格管控,即使調用的時候,實參數多于形參,多于參數將被忽略,如果形參多于實參,則多于形參賦值爲undefine。
但是我們依然可以arguments數組來獲取參數值.
arguments還具有callee屬性,用于調用當前函數本身,即可以通過這個方法來實現遞歸調用
2.函数的属性
length 属性: 返回arguments的长度
prototype属性: 重要属性,待增加描述
apply()方法和call()方法: 两个方法都用于将函数看作一个对象的方法调用,二者的第一个参数做为另一个对象的名称,剩余的参数将传递给该函数,不同之处在于apply方法将剩余参数以数组的形式传递
3.protype
<script language="javascript">
function Class(x, y) {
this.x = x;
this.y = y;
}
var c = new Class(1, 2); //原型對象
Class.prototype.pi = 3.14;
document.write('c.pi'+c.pi);//3.14 去找原型對象的屬性
</script>
Javascript不存在類的說法,一般用原型對象protype或者構造函數來實現
另外可以通過delete Class.prototype.pi 删除屬性
4.Object 的屬性和方法
constructor 獲取對象的構造函數;
tostring()
toLocaleString() 多用于日期等類或者實例的本地化
valueOf() 類似toString() 用于 Number/Boolean對象
hasOwnProperty() 參數爲字符串,判斷是否是實例本身的屬性還是繼承來的屬性
propertyIsEnumerable() 判斷是否是對象本身定義幷且是可以用for/in循環枚舉的
isPrototypeOf() 判斷是否是參數的原型對象
5.數組
//數組定義
var a = new Array(1, 2, 3, 4, '5');
var b = [1, 2, 3, 4, 5];
var c = [[1, ['a', 'b']], 2, [3, ['c', 's']]];
document.writeln(c[0][1][1]); //b
//可以直接添加元素,因爲是稀疏數組,只爲真正初始化的元素分配空間,數組的長度爲最大的下標+1;
document.writeln(c.length);
//數組的方法
var b1 = b.join('-');
document.writeln(b1); //將b的元素用參數字符串串聯起來
var b2 = b.reverse();//將b的元素次序顛倒
document.writeln('<br/>sort前 b===b2 :' + b===b2 + '<br/>'); // false
document.writeln(b2.sort(function() { return -1; })); //返回負數,前後交換
//b.concat(b2); //將參數元素添加到數組後面
document.writeln('<br/>sort后 b===b2 :' + b === b2 + '<br/>');//false
document.writeln('<br/> b.concat(b2) :' + b.concat(b2) + '<br/>'); //兩個數組相連
document.writeln('<br/>'+b);//concat 后,b本身沒有變化
/*
兩個數組指向同一個數組的時候,調用某些函數會同時修改兩個數組
*/
var array1 = [1, 2, 3];
var array2 = array1;
//array1.concat(1); 不會
//array1.reverse(); 會
//array1.sort(function(a, b) { return b - a; }); 不會
document.writeln('數組2 : ' + array2);
//array1.slice(index,end); 包含index 不包含end,如果只有一個參數,則是從index到結束,如果參數是負數,則表示從後面開始計算
document.writeln(array1.slice(-3, -1)); //1,2
//array1.splice(index,num,args1,args2);num 要删除的元素個數,參數1,參數2,要插入的元素.与上面的不同,
將對元素本身進行操作,返回一個被删除元素的數組
push()/pop() push(),在數組末端追加元素,pop() 删除數組末端元素
unshift()/shift() 与push()/pop()不同的是,対數組首端元素進行操作。注意當unshift插入多個參數的時候,參數爲一次性插入