File tree Expand file tree Collapse file tree 1 file changed +54
-0
lines changed Expand file tree Collapse file tree 1 file changed +54
-0
lines changed Original file line number Diff line number Diff line change @@ -2047,3 +2047,57 @@ multiply(value);
2047
2047
</details >
2048
2048
2049
2049
---
2050
+
2051
+ ###### 66. 使用哪個建構式可以成功繼承 Dog 類別?
2052
+
2053
+ ``` javascript
2054
+ class Dog {
2055
+ constructor (name ) {
2056
+ this .name = name;
2057
+ }
2058
+ };
2059
+
2060
+ class Labrador extends Dog {
2061
+ // 1
2062
+ constructor (name , size ) {
2063
+ this .size = size;
2064
+ }
2065
+ // 2
2066
+ constructor (name , size ) {
2067
+ super (name);
2068
+ this .size = size;
2069
+ }
2070
+ // 3
2071
+ constructor (size ) {
2072
+ super (name);
2073
+ this .size = size;
2074
+ }
2075
+ // 4
2076
+ constructor (name , size ) {
2077
+ this .name = name;
2078
+ this .size = size;
2079
+ }
2080
+
2081
+ };
2082
+ ```
2083
+
2084
+ - A: 1
2085
+ - B: 2
2086
+ - C: 3
2087
+ - D: 4
2088
+
2089
+ <details ><summary ><b >Answer</b ></summary >
2090
+ <p >
2091
+
2092
+ #### Answer: B
2093
+
2094
+ 在子類別中,在呼叫 ` super ` 前不能存取 ` this ` 關鍵字,如果你這麼做,它將拋出一個 ` ReferenceError ` ,建構式1與4會引發這個錯誤。
2095
+
2096
+ 使用 ` super ` 關鍵字時,我們要提供參數給父類別呼叫其建構式。父類別需要接受一個 ` name ` 參數,所以我們需要把 ` name ` 傳給 ` super ` 。
2097
+
2098
+ ` Labrador ` 類別接收兩個參數, ` name ` 參數是由於它繼承了 ` Dog ` , ` size ` 作為` Labrador ` 類的額外屬性,它們都需要傳遞給 ` Labrador ` 的建構式,因此使用建構式2是正確答案。
2099
+
2100
+ </p >
2101
+ </details >
2102
+
2103
+ ---
You can’t perform that action at this time.
0 commit comments