การสืบทอดคลาสจาวาสคริปต์
ผู้เขียน:Eve Cole
เวลาอัปเดต:2009-06-11 16:23:07
1. วิธีแรกคือการแสร้งทำเป็นวัตถุ (โดยใช้ชื่อเมธอดทุกชื่อใน js นั้นเป็นออบเจ็กต์ฟังก์ชัน) ฟังก์ชันโค้ด Java Parent(ชื่อผู้ใช้){
this.username = ชื่อผู้ใช้;
this.say = ฟังก์ชั่น () {
การแจ้งเตือน (this.ชื่อผู้ใช้);
-
-
ฟังก์ชั่น Child (ชื่อผู้ใช้, รหัสผ่าน) {
this.temp = Parent;//temp ชี้ไปที่จุดที่ Parent ชี้ ชื่อเมธอดแต่ละชื่อใน js คือออบเจ็กต์ Function ซึ่งชี้ไปที่เมธอด
this.temp(username);//เนื้อหาในวิธีการเริ่มต้นลบ this.temp;//temp ไม่มีประโยชน์อีกต่อไป คุณสามารถลบมันได้โดยตรง สิ่งนี้จะไม่สูญหาย //Parent(username);//การเขียนในลักษณะนี้อาจดูเหมือนถูกต้องเมื่อมองดูภายนอก แต่จริงๆ แล้วมันเป็นเรื่องผิด เนื่องจากเฉพาะอ็อบเจ็กต์ที่ออกมาใหม่เท่านั้นที่มีสิ่งนี้ จึงไม่มีค่าเมื่อเรียกสิ่งนี้ใน Parent this.password =password;
this.hello = ฟังก์ชั่น () {
การแจ้งเตือน (this.password);
-
-
var parent = ผู้ปกครองใหม่ ("zhangsan");
parent.say();//zhangsan
var child = เด็กใหม่ ("lisi", "123456");
child.say();//lisi
child.hello();//123456
//วิธีแรกคือการแสร้งทำเป็นวัตถุ (การใช้ชื่อเมธอดทุกรายการใน js นั้นเป็นวัตถุ Function)
ฟังก์ชั่นผู้ปกครอง (ชื่อผู้ใช้) {
this.username = ชื่อผู้ใช้;
this.say = ฟังก์ชั่น () {
การแจ้งเตือน (this.ชื่อผู้ใช้);
-
-
ฟังก์ชั่น Child (ชื่อผู้ใช้, รหัสผ่าน) {
this.temp = Parent;//temp ชี้ไปที่จุดที่ Parent ชี้ ชื่อเมธอดแต่ละชื่อใน js คือออบเจ็กต์ Function ซึ่งชี้ไปที่เมธอด
this.temp(username);//เนื้อหาในวิธีการเริ่มต้นลบ this.temp;//temp ไม่มีประโยชน์อีกต่อไป คุณสามารถลบมันได้โดยตรง สิ่งนี้จะไม่สูญหาย //Parent(username);//การเขียนในลักษณะนี้อาจดูเหมือนถูกต้องเมื่อมองดูภายนอก แต่จริงๆ แล้วมันเป็นเรื่องผิด เนื่องจากเฉพาะอ็อบเจ็กต์ที่ออกมาใหม่เท่านั้นที่มีสิ่งนี้ จึงไม่มีค่าเมื่อเรียกสิ่งนี้ใน Parent this.password =password;
this.hello = ฟังก์ชั่น () {
การแจ้งเตือน (this.password);
-
-
var parent = ผู้ปกครองใหม่ ("zhangsan");
parent.say();//zhangsan
var child = เด็กใหม่ ("lisi", "123456");
child.say();//lisi
child.hello();//123456
2. วิธีที่สอง: call() function method ฟังก์ชัน call() เป็นฟังก์ชันของ Function object การใช้งานเฉพาะมีดังนี้โค้ด Java // ฟังก์ชั่น call() เป็นฟังก์ชันของ Function object // เฉพาะ การใช้งานก็เช่น function test(str){
การแจ้งเตือน (this.username + "," + str);
-
var o = วัตถุใหม่ ();
o.username = "จางซาน";
test.call(o,"123456");//zhangsan,123456 เนื่องจากแต่ละ Function object มีเมธอด call() และชื่อฟังก์ชันคือ Function object พารามิเตอร์แรกของฟังก์ชัน call() นี้ใน.
//ฟังก์ชัน call() เป็นฟังก์ชันของวัตถุ Function //การใช้งานเฉพาะ เช่น function test(str){
การแจ้งเตือน (this.username + "," + str);
-
var o = วัตถุใหม่ ();
o.username = "จางซาน";
test.call(o,"123456");//zhangsan,123456 เนื่องจากแต่ละ Function object มีเมธอด call() และชื่อฟังก์ชันคือ Function object พารามิเตอร์แรกของฟังก์ชัน call() นี้ใน.
ฟังก์ชันโค้ด Java หลัก (ชื่อผู้ใช้) {
this.username = ชื่อผู้ใช้;
this.say = ฟังก์ชั่น () {
การแจ้งเตือน (this.ชื่อผู้ใช้);
-
-
ฟังก์ชั่น Child (ชื่อผู้ใช้, รหัสผ่าน) {
Parent.call(นี่,ชื่อผู้ใช้);
this.password = รหัสผ่าน;
this.hello = ฟังก์ชั่น () {
การแจ้งเตือน (this.password);
-
-
var parent = ผู้ปกครองใหม่ ("zhangsan");
parent.say();//zhangsan
var child = เด็กใหม่ ("lisi", "123456");
child.say();//lisi
child.hello();//123456
ฟังก์ชั่นผู้ปกครอง (ชื่อผู้ใช้) {
this.username = ชื่อผู้ใช้;
this.say = ฟังก์ชั่น () {
การแจ้งเตือน (this.ชื่อผู้ใช้);
-
-
ฟังก์ชั่น Child (ชื่อผู้ใช้, รหัสผ่าน) {
Parent.call(นี่,ชื่อผู้ใช้);
this.password = รหัสผ่าน;
this.hello = ฟังก์ชั่น () {
การแจ้งเตือน (this.password);
-
-
var parent = ผู้ปกครองใหม่ ("zhangsan");
parent.say();//zhangsan
var child = เด็กใหม่ ("lisi", "123456");
child.say();//lisi
child.hello();//123456
3. วิธีการนำไปใช้งานที่สาม: Apply() วิธีการใช้ฟังก์ชัน Apply() และ call() เหมือนกัน ยกเว้นว่าพารามิเตอร์จะถูกส่งผ่านต่างกัน พารามิเตอร์ของ Apply คือโค้ด Java อาร์เรย์ // วิธีการนำไปใช้งานที่สาม: ฟังก์ชัน Apply() วิธีการ Apply() และ Call() เหมือนกัน ยกเว้นว่าพารามิเตอร์ถูกส่งต่างกัน พารามิเตอร์ของ Apply คืออาร์เรย์ // ดังนั้นการสืบทอดจึงสามารถใช้ฟังก์ชัน Parent(username){ เช่นนี้
this.username = ชื่อผู้ใช้;
this.say = ฟังก์ชั่น () {
การแจ้งเตือน (this.ชื่อผู้ใช้);
-
-
ฟังก์ชั่น Child (ชื่อผู้ใช้, รหัสผ่าน) {
Parent.apply(นี่,อาร์เรย์ใหม่(ชื่อผู้ใช้));
this.password = รหัสผ่าน;
this.hello = ฟังก์ชั่น () {
การแจ้งเตือน (this.password);
-
-
var parent = ผู้ปกครองใหม่ ("zhangsan");
parent.say();//zhangsan
var child = เด็กใหม่ ("lisi", "123456");
child.say();//lisi
child.hello();//123456