如何用物件導向的想法來寫JavaScript,對於初學者應該是比較難的,我們常用的JQuery其實也是用物件導向的想法去封裝的,今天我們來看看如何在Javascript中用Interface,在C#還是JAVA中都應該針對介面設計我們的程序,在C#和Java中都Interface這樣的關鍵字,但是JavaScript中沒有對應的機制,但是Javascript很靈活,我們可以用它的特性去模仿Interface,但是我們需要加入一些methods來做check的動作。
我們來看下一個Interface的作用:
繼承了這個Interface就必須要實現這個Interface中定義的方法(方法簽章)
//JavaScript 現在還做不到方法的簽章的限制
var Interface = function (name, methods) {
if (arguments.length != 2) {
throw new Error("the interface than }
this.Name = name;
this. Method = [];
for (var i = 0; i
"the method name is not string");
} this.Method.push(methods[i]);
interface*/
Interface.ensureImplement = function (object) {
if ( arguments.length
throw new Error("there is not Interface or the instance 1; i
var interface1 = arguments[i];
if (interface1.constructor !== Interface) {
}
for (var j = 0; j
var method = interface1.Method[j]; ect[method] !== function) {
throw new Error("you instance doesnt implement the interface");
}
}
我們來分析code,而我們現在的做法是用來比較一個Instance中的方法名稱在介面中是否定義了。我先定義一個介面(2個參數),第二個參數是介面中的方法名稱。 Check方法用簡單的2層for迴圈來做比較動作。
我們來看看如何使用這個介面:var Person = new Interface("Person", ["GetName", "GetAge"]); var Man = function (name, Name .Age = age; } Man.prototype = { GetName: function () { return this.Name; }, // GetAge: function () { return this Interface.ensureImplement (instance, Person); var name = instance.GetName(); alert(name); } 出錯。在ensureImplement的時候發現並沒有去實作這個方法。