鍍金池/ 問答/HTML/ JS函數(shù)變量問題

JS函數(shù)變量問題

新手問個(gè)很困擾的問題, 為什么 給函數(shù)設(shè)置了屬性age, 它的實(shí)例對(duì)象取屬性的時(shí)候是undefined

function test(){
    this.name = "fuck";
}
test.age = 10;

alert(test.age);//10
alert(new test().age); //undefined
回答
編輯回答
礙你眼

test.age = 10;是賦值給函數(shù)對(duì)象的,而函數(shù)new之后是一個(gè)新對(duì)象,只是原型上的構(gòu)造器指向它而已
test.age = 10;改成test.prototype.age = 10;

2018年9月14日 11:22
編輯回答
舊顏

使用工廠方式生成對(duì)象(就是使用 new 關(guān)鍵字),new 后面的 test 我們叫它「構(gòu)造函數(shù)」,可以近似地看作是其它語言中的「類」,直接在構(gòu)造函數(shù)掛載的屬性可以認(rèn)為是「類」的靜態(tài)屬性,靜態(tài)屬性只能通過「類」直接訪問而不能被它的實(shí)例繼承。

正如樓上說的,要掛載在 test.prototype.age 上,new test().age 才會(huì)有值。如果不能理解的話,可以直接認(rèn)為 test.prototype 下的屬性是 test 「類」下的公共屬性,test 下的屬性是 test 「類」的靜態(tài)屬性

以上都是不專業(yè)的回答,希望對(duì)你理解有幫助

2017年10月15日 05:11
編輯回答
茍活

實(shí)例對(duì)象可以取到構(gòu)造函數(shù)原型鏈上的屬性,取不到構(gòu)造函數(shù)自身的屬性。

2017年1月26日 20:29
編輯回答
久愛她
function test(){
    this.name = "fuck";
}
test.age = 10;

console.log(test.age);
console.log(new test());
2017年10月12日 07:33