javaScript高級程序設計第3版筆記
<script src = "xxx.js" defer = "defer"> </script>
在引用外部script時,<script src = "">內部不能再有代碼,瀏覽器只加載外部文件</script>
defer 屬性只實用於外部js引用情景;屬性功能指定下載js代碼,直到加載完頁面內容才加載js文件;
變量作用域
- A只能訪問a
- B只能訪問a, b
- C只能訪問a, b, c
- D只能訪問a, d
在javaScript中沒有塊作用域,只有函數作用域
for(var i = 0; i < 10; i++)
{
......
};
alret(i); // i = 9;//i的作用域屬於上層作用域;
用var 申明的變量會自動放入最接近的作用域中(所在函數內部),而未使用var申明的變量.都是全局變量
數據類型
基本類型(undefined, Null, Boolean, Number, String)
引用類型(Object, Array, Date, RegExp, Function, )
var obj = new Object();
var arr = new Array();
var arr = new Array(5); //分配長度
var arr = new Array("init", "init1"); //創建並初始化
var time = new Date(); //返回當前系統時間
var re = new RegExp(); //正則表達式類型
Math對象
Math.PI //派的值
Math.max("5", "4", "8", "...");//返回最大值(可以理解為靜態成員方法)
Math.min("...");//返回最大值
對象
Object.defineProperty(obj, "name", {
writable: false,
value: " bokeyuan"
});
Object.defineProperty(); //靜態成員函數,用來指定成員屬性類型
- 第一個參數為,需要設定的對象
- 第二個參數為,對象屬性名;
- 第三個對象為,對象屬性類型設置
可設置的類型
- [configurable] //能否通過delete刪除屬性,默認true
- [enumerable] //能否通過for-in 循環返回屬性默認true
- [writable] //能否修改屬性值 默認true
- [value] //讀取屬性值時從位置讀;寫入值時,放入此位置,默認undefined;
創建對象
工廠模式(函數調用模式)
function getObj(name, face, toll)
{
var obj = new Object();
obj.name = name;
obj.face = face;
obj.toll = toll;
//成員方法
function ta()
{
return face + toll;
}
....
return obj;
}
var a1 = getObj("...","...","... ");
var a2 = getObj("...","...","... ");
構造函數模式(函數對象等效模式)
function getObj(name, age, time)
{
this.name = name;
this.age = age;
this.time = time;
function t()
{
return this.time++;
}
}
var obj = new getObj("..", "..", "..");
原型模式(成員初始化模式)
function getObj()
{
getObj.prototype.name = "...";
getObj.prototype.age = ....;
getObj.prototype.time = ....;
function x()
{
.....
}
}
var obj = new getObj();
組合使用構造函數模式
動態原型模式
寄生構造函數模式
穩妥構造函數模式
繼承
原型鏈
借用構造函數
組合繼承
原型式繼承
寄生式繼承
寄生組合式繼承
javaScript高級程序設計第3版筆記