javascript進階學習筆記整理

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.