一.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代碼