原形方法吧。 。 。 。 prototype
例如給數組Array定義一個函數
Array.prototype.in_array = function ($string) { for (var i = 0; i
{
for (i = 0; i
return true;
}
}
return false;
}
呼叫時候就可以
var a = new Array('a');
a.in_array('a');
查看是否存在
在例如字串
String.prototype.trim = function()
{
return this.replace(/^\s*|\s*$/g, '');
}
呼叫時候就可以
var a = ' abcdefg ';
a.trime();
這樣就去掉兩邊的空格了
自訂函數也是一樣,首先建立一個函數,並使用prototype在其中新增方法。
Javascript物件定義的幾種方式
一. 工廠方式:先建立對象,然後再為對像新增方法和屬性。封閉之後,避免使用new操作符建立物件。儘管這種方法有一些弊端,例如在工廠函數內部定義方法時,每次呼叫時都會建立新的函數。
function factory(name, person, address, time){
var tmp=new Object;
tmp.name=name;
tmp.person=person;
tmp.address=address;
tmp.workTime=function(){
alert("我們開始工作的時間是" time);
}
return tmp;
}
var factory1 = factory("drugs", 100, "Huashan Rd", 10);
var factory2 = factory("TCMdrugs", 100, "hongqiao Rd", 11);
factory1.workTime();
factory2.workTime();//在這裡,factory1和factory2有不同的方法
雖然對這種問題可以用下面的方式改進,但是缺乏很好的封裝性
function factory(name, person, address, time){
var tmp=new Object;
tmp.name=name;
tmp.person=person;
tmp.address=address;
tmp.workTime=workTime();
return tmp;
}
function workTime(){
alert("我們開始工作時間是" this.time);
}
二、建構函數方式是指在建構函式內部使用this關鍵字來建立對象,並且在使用時需要透過new操作符來實例化。然而,這種方式存在和工廠方式相同的問題,即每次調用構造函數都會創建一個新的函數對象,導致函數的重複創建。
function construct(name, person, address, time) { // 在這裡寫你的程式碼邏輯 }
this.name=name;
this.person=person;
this.address=address;
this.workTime=function(){
alert("我們開始工作時間是" this.time);
};
}
三.原型方式:利用prototype屬性來實現屬性和方法,可以透過instanceof 檢查物件類型,解決了重複建立函數的問題。不過要注意的是,不能透過傳遞參數來初始化屬性。
function Car(){
}
Car.prototype.color = "red";
Car.prototype.doors = 4;
Car.prototype.mpg = 23;
Car.prototype.showColor = function() {
alert(this.color);
};
var car1 = new Car();
var car2 = new Car();
但是如果遇到下面的情況,又出問題了
Car.prototype.drivers = ["mike", "sue"];
car1.drivers.push("matt");
alert(car1.drivers); //輸出「mike,sue,matt」
alert(car2.drivers); // 輸出 "mike, sue, matt"
drivers是指向Array物件的指針,Car的兩個實例都引用了同一個數組。
四.混合的建構子/原型方式:針對原型方式的解決方案
function Car(sColor, iDoors, iMpg) { this.color = sColor; this.doors = iDoors; this.mpg = iMpg; }
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.drivers = ["mike", "sue"];
#}
Car.prototype.showColor = function () { // 你的程式碼 }
alert(this.color);
};
var car1 = new Car("red", 4, 23);
var car2 = new Car("blue", 3, 25);
car1.drivers.push("matt");
alert(car1.drivers);
alert(car2.drivers);
五. 動態原型方式:這是一種非常推薦的方式,它避免了前面幾種方式中出現的問題,並且提供了更友善的程式設計風格。
function Car(sColor, iDoors, iMpg) { this.color = sColor; this.doors = iDoors; this.mpg = iMpg; }
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.drivers = ["mike", "sue"];
如果(typeof Car.initialized == "undefined"){
Car.prototype.showColor = function () { // 你的程式碼 }
alert(this.color);
};
Car.initialized = true;
}
}
var car1 = new Car("red", 4, 23);
var car2 = new Car("blue", 3, 25);
car1.drivers.push("matt");
alert(car1.drivers);
alert(car2.drivers);
六.混合工廠方式:和工廠方式有些相似,但是使用new關鍵字進行實例化。雖然與工廠方式有相同的弊端,但不建議使用。
以上是JavaScript如何定義類似hide的方法,可透過點擊調用的詳細內容。更多資訊請關注PHP中文網其他相關文章!