[js]javascript高級-學習筆記
一.js面向對象的一種實現
<script type="text/javascript">
function Person() {
this.name = "張三";
this.age = 0;
var nickName = "小三"; //類似私有變量,函數中的局部變量在函數執行完後自動銷毀.
this.SayHi = function () {
alert("我的名字是" + this.name + " ,大家都叫我" + nickName + " ,我今年已經" + this.age + "歲了");
}
}
/////////////////////////
function Student(myclass, myteacher) {
this.myClass = myclass;
this.myTeacher = myteacher;
this.SayHi = function () {
if (this.myClass != undefined) {
alert("我是"+this.myClass+"的"+this.name);
}
else if (arguments.length == 2) {
alert("我是" + this.myClass + "的" + this.name + ", 我的老師是" + this.myTeacher);
}
else {
new Person().SayHi();
}
}
}
Student.prototype = new Person(); //創建繼承關系
//////////////
onload = function () {
var p = new Person(); //類似實例化類Person,對象的創建(解析兩次)並不是推薦用法
p.age = 18; //給Person的age賦值, age相當於屬性
p.SayHi(); //調用Person裏的公共方法,輸出結果:我的名字是張三 ,大家都叫我小三 ,我今年已經18歲了!
var stu = new Student(‘三年級二班‘, ‘jameszou‘); //有參構造函數
stu.name = ‘le‘; //父類的屬性
stu.SayHi(); //Student重寫了SayHi方法
var stu1 = new Student();
stu1.myClass = ‘三年級三班‘;
stu1.myTeacher = ‘ly‘;
stu1.SayHi(); //輸出:我是三年級三班的張三"
var stu2 = new Student();
stu2.age = 20;
stu2.SayHi();//輸出:?:我的名字是張三,大家都叫我小三,我今年0歲了
}
</script>
二.6種簡單數據類型:
1)Undefined.一個變量被定義但是沒有給他賦值.
2)Null.(引用類型)
3)Number.數值類型
var num = 1.0這個時候num是int類型,只有當小數點後面不為0的時候才是浮點型,
isNaN()可以判斷傳人的值是否為Number類型,
var num = parseInt(‘112412aaa11‘); num=112412;
4)Boolean.
5)String
6)function
Function類型:
執行環境:就是當前函數(方法)所處在的父環境。比如在window下執行的函數他的執行環境就是window。
沒有塊級作用域:if等語句沒有用塊狀作用域,if,for等用大括號括起來的代碼並不能形成一個塊狀作用域。
var變量聲明:用var聲明變量時,會他把添加到最近的可用環境,即不用var定義的一個變量是全局變量.
聲明語句會首先執行,以保證程序的運行.
垃圾回收:變量對象設為null的時候原對象將被自動回收.
屬性:
this.函數所在的執行環境,函數在執行時所處的作用域.
prototype(原型).
三.復雜類型
Object:
Object類型本質是一個無序的鍵值對列表,類似於集合,json格式。
創建Object可以有多種方式:
1)var obj = new Object(); obj.name="lz"; obj.age=17;
2)var s = {}; s.name="ly"; s.age=18;
3)var s = {"name":"ln","age":"17"};
訪問Object對象的屬性的方法:
1)obj.name
2)obj["name"]
Array類型:
相當於List<T>,length屬性是可讀寫的(可以利用這一點刪除數組元素)
數組的棧方法:(後進先出)
push() 往裏加 pop() 從棧頭往外拿
數組的隊列方法:(先進先出)
shift() 從隊列尾部往外拿 unshift() 從隊列尾部往裏加
排序:
sort() 排正序,將數組中的數據按照一定的順序排列,參數可以傳遞一個可傳入比較方法(類似於接口) reverse() 翻轉
連接數組: concat()
var colors=["a","b"];
var newcolor=colors.concat("yellow",["c","d"]);//colors有5個元素。
concate方法中若傳入數組,會把該數組拆分,將其中元素加入目標數組中。若傳入json格式數據,一個json數據就看成一個元素加入數組。
四.其他
typeof: return true or false,
instanceof 判斷復雜類型的類型 return true or false,如果用它來判斷值基本類型類型永遠返回false,
eval()他會把eval()中的參數解析出來,插入到eval執行的位置,效果相當於在相應的位置直接寫入JS代碼
[js]javascript高級-學習筆記