在使用jQuery時候,我們常會看到或使用到方法鏈,例如:
複製代碼代碼如下:
$("#p1").css("color","red").slideUp(2000).slideDown(2000);
這段程式碼的意思是選擇器選擇id為p1的html標籤,顏色變紅,之後slideup,再slidedown。
自然是可以將這幾個方法分開寫,但是不分開的話不僅有很好的易讀性,代碼量也會有減少,那麼何樂而不為?
這種呼叫函數的方式在jQuery稱為“Chaining”,原理也很簡單:能夠chaining的方法呼叫後會傳回物件本身即可。
下面用java程式碼做個示範:
不使用chaining:
Persion.java:
複製代碼代碼如下:
public class Persion {
private int id;
private String name;
private String phoneNumber;
private String address;
public Persion() {
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public void setAddress(String address) {
this.address = address;
}
public void printId() {
System.out.println(this.id);
}
public void printName() {
System.out.println(this.name);
}
public void printPhoneNumber() {
System.out.println(this.phoneNumber);
}
public void printAddress() {
System.out.println(this.address);
}
}
Test.java:
複製代碼代碼如下:
public class Test {
public static void main(String[] args) {
Persion persion1 = new Persion();
persion1.setId(3);
persion1.setName("John");
persion1.setPhoneNumber("1111111");
persion1.setAddress("US");
persion1.printId();
persion1.printName();
persion1.printPhoneNumber();
persion1.printAddress();
}
}
使用chaining:
Persion.java:
複製代碼代碼如下:
public class Persion {
private int id;
private String name;
private String phoneNumber;
private String address;
public Persion() {
}
public Persion setId(int id) {
this.id = id;
return this;
}
public Persion setName(String name) {
this.name = name;
return this;
}
public Persion setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
return this;
}
public Persion setAddress(String address) {
this.address = address;
return this;
}
public Persion printId() {
System.out.println(this.id);
return this;
}
public Persion printName() {
System.out.println(this.name);
return this;
}
public Persion printPhoneNumber() {
System.out.println(this.phoneNumber);
return this;
}
public Persion printAddress() {
System.out.println(this.address);
return this;
}
}
Test.java:
複製代碼代碼如下:
public class Test {
public static void main(String[] args) {
Persion persion1 = new Persion();
persion1.setId(3).setName("John")
.setPhoneNumber("1111111").setAddress("US");
persion1.printId()
.printName()
.printPhoneNumber()
.printAddress();
}
}
好詭異的感覺~哈哈!