第一題 第二題 第三題 第四題 第五題 第六題 解答: 1,2題考察的是構造函數的返回值的問題。 每個函數都有返回值,如果使用了return語句,則返回return後跟的值,如果沒有使用return,則預設返回undefined.特別的,如果這個函數是構造函數,則預設返回this對象,如果構造函數內 ...
第一題
var fun = function(){ this.name = 'peter'; return { name: 'jack' }; } var p = new fun(); //請問p.name是:
第二題
var fun = function(){ this.name = 'peter'; return 'jack'; } var p = new fun(); //請問p.name是:
第三題
var fun = function(){} fun.prototype = { info : { name : 'peter', age : 25 } } var a = new fun(); var b = new fun(); a.info.name = 'jack'; b.info.name = 'tom'; //請問a.info.name和b.info.name分別是:
第四題
var fun = function(){ this.info = { name : 'peter', age : 25 } } var a = new fun(); var b = new fun(); a.info.name = 'jack'; b.info.name = 'tom'; //請問a.info.name和b.info.name分別是:
第五題
var fun = function(){} fun.prototype = { name : 'peter', age : 25 } var a = new fun(); var b = new fun(); a.name = 'jack'; b.name = 'tom'; //請問a.name和b.name分別是:
第六題
var fun = function(){ this.info = { name : 'peter', age : 25 } } fun.prototype = { info : { name : 'peter', age : 25 } } var a = new fun(); var b = new fun(); a.info.name = 'jack'; b.info.name = 'tom'; //請問a.info.name和b.info.name分別是:
解答:
1,2題考察的是構造函數的返回值的問題。
每個函數都有返回值,如果使用了return
語句,則返回return
後跟的值,如果沒有使用return
,則預設返回undefined
.
特別的,如果這個函數是構造函數,則預設返回this
對象,如果構造函數內使用了return
語句,並且return
後跟的是一個對象,則這個構造函數返回的是這個對象,否則返回this
.
所以1題中的p = {name: 'jack'}
,而2題中的p = {name: 'peter'}
.
3, 4, 5, 6題都是考察prototype
的知識。
3.兩個都輸出tom。首先你要知道原型模式的執行流程:
1.先查找構造函數實例里的屬性或方法,如果有,就立即返回。
2.如果構造函數的實例沒有,就去它的原型對象里找,如果有,就立即返回
4 .a.info.name
為jack
,b.info.name
為tom
。原因我想你從第三題已經得出來了。
5.a.name
輸出jack,b.name
輸出tom。原因我想你從第三題已經得出來了。
6.a.info.name
為jack
,b.info.name
為tom
。原因我想你從第三題已經得出來了。