命 名 空 間 :管理變數,防止汙染全域性,適用於模組開發
// 之 前 的 解 決 辦 方 (已經不用)--- 命名空間
var org = ,
xuming :
},department2 : ,
lisi :
}
}
(了解即可)用 法:
org.department1.jicheng.name ; — 簡化 — var jc = org.department1.jicheng; jc.name;
-------- 真 正 命 名 空 間 的 用 法 -------
--------with( object )--------------
作 用: 達 到 簡 化 代 碼 的 作 用
缺 點: 過於強大,能修改作用域鏈,造成程式效率低下(es5.0 禁止使用它)
例如:
var org = ,
deng :
},
dp2 :
}
}訪問 org.dp1.jc.name
with(org.dp1.jc)
with 的尋找順序:
先找 自己引數 裡的,在找自身所處環境裡的,最後在找全域性的
使用with語句關聯了 引數物件 ,解析時 with**塊的內部把每個變數都認為是區域性變數;
如果區域性變數裡與car物件屬性(例如size)屬性同名,這個區域性變數就會指向car裡面的屬性;
// 用 閉包 可以實現變數私有化,不會汙染全域性
// init ------- 初始化
var name = "laodeng";
var init = (function ()
return function ()
} () );
// 兩個 name 變數互不影響
init();
console.log(name);
零 散 的 知 識 點
實現乙個 方法 的 連續呼叫 ( 模 仿 了 jquery 包裡的 鏈式呼叫模式 )
var deng = ,
drink : function () ,
perm : function ()
}
deng.smoke() .drink()
// ----> 此時執行完 smoke() 後,return 返回的是 undefined ,無法繼續執行
// 當 return this 時是可以執行的
// 若想連續執行函式,必須在每個函式裡 重新返回 物件
deng.smoke().drink().perm();
屬 性 名 拼 接 問 題
var deng = ,
wife2 : ,
wife3 : ,
wife4 : ,
callwife : function (num)
}通 常 在 訪 問 一 個 對 象 屬 性 時 :
一般用法為 : deng.name ------> 實質的隱式轉化為 this[ 』 name 』 ]
對 象 的 枚 舉 ( 遍 歷 ):
for in (簡化版的 for 迴圈)
hasownproperty(過濾性方法)(判斷當前屬性是不是自身的)
ininstanceof
遍 歷 對 象 屬 性
var obj =
}
1.( for in ) 遍歷 物件中所有 屬性,自己手動新增都可以遍歷
for (var prop in obj )
}2. in ---> (最不常用的遍曆法,但是筆試題常考)
// 判斷 「 」 (字串)裡的屬性是否屬於 該物件,是就返回 true,
// 不分青紅皂白,包括員原型的屬性也認為是當前物件的屬性
// 注意: 屬性要寫在 「 」 裡,不加字串,認為是變數
console.log( " height " in obj);
3. instanceof (經常出現,常考)
// a instanceof b --------> a 物件 是不是 b 建構函式 構造出來的
// 看 a 物件的原型鏈上 有沒有 b 的原型,是就 返回 true
function person ()
var person = new person();
console.log( person instanceof person );
// 區別 陣列 物件 ( tostring() 和 call () 方法 )
object.prototype.tostring = function ()
object.prototype.tostring.call();
------------------ t h i s -----------------------
------------------ arguments ----------------
------------------ function --------------------
arguments.callee————————> 指向的是 函式 的 引用(也就是函式本身)
func.caller————————> 函式自身擁有的,顯示出某個函式被呼叫的環境
arguments.callee() 示例:
// 求階乘的函式中,要實現呼叫自身函式,但是自身的函式卻沒有函式名,
// 在這樣的情況下就找不到函式引用,通過 arguments.callee()來解決
var num = (
function (n)
return n*arguments.callee(n-1);
} (3) )
func.caller 示例:
函式自身擁有的,顯示出某個函式被呼叫時的環境
function test ()
function demo ()
test();
第四部分 方法3
對employee.calculatepay方法的呼叫是問題的原因。我們需要的是晚繫結。晚繫結 latebinging 意味著編譯器到執行時才選擇要執行的方法。為了迫使編譯器呼叫向上型別轉換得到的物件的方法的正確版本。我們使用了兩個關鍵字 virtual 和override.必須在基類方法中使用vi...
第四部分 方法5
linux繼承了unix作業系統結構清晰的特點。在linux下的檔案結構非常有條理。但是,上述的優點只有在對linux相當熟悉時,才能體會到。vmlinuz 我們已經知道,每乙個linux都有乙個核心 vmlinuz 我們在這個核心上新增上可以完成各種特定功能的模組,每個模組就體現在 linux中各...
GEF 高階,第四部分 Locator
簡介 本文是gef高階的第四部分,主要描述了locator的概念和使用方法。locator是 乙個圖形定位器,用來動態的決定某個圖形相對於另外乙個圖形的位置,因此可以用來構造一些 複雜的圖形或者實現一些比較有趣的功能。由於eclipse 3.3已經發布,本文的示例 是在 eclipse 3.3,ge...