javascript中的屬性註意事項
阿新 • • 發佈:2019-04-18
color 改變 inf 對象 style 屬性 class 類型 com
1.函數原型prototype設置的對象是只讀類型,所以不能修改(即棧只讀)。但是我們常常可以看到它被“修改‘’了。若對象中定義的屬性和原型中屬性一樣,優先使用自定義屬性。
例如代碼:
//原型 類似於父類 function students() { this.major= ‘數學‘; this.studentsName = [‘張三‘,‘李四‘,‘王五‘]; } var myStudents = new students(); //必須建立實例對象 才能被其他對象‘繼承‘;//建立對象 function teacher(sub) { } teacher.prototype = myStudents;//設置原型 var mathTeacher = new teacher(); //創建對象 mathTeacher.studentsName[0] = ‘趙六‘; var englishTeacher = new teacher(); //創建對象 englishTeacher.major = ‘English‘; alert(‘studentsName=‘ + mathTeacher.studentsName + " " + ‘major=‘ + mathTeacher.major);//輸出結果 alert(‘studentsName=‘ + englishTeacher.studentsName + " " + ‘major=‘ + englishTeacher.major);//輸出結果
輸出結果為:
但是它們修改的方式是不一樣的。
mathTeacher.studentsName[0] = ‘趙六‘;
studentsName指向的數組不能變,但是數組成員可以變。例如studentsName指向三年二班,你就不能讓它重新指向四年一班。但是三年二班的學生改變了,studentsName還是指向三年二班沒有改變。(這涉及棧堆問題)
englishTeacher.major = ‘English‘;
這並沒有改變原型中的major,只是對象新建了一個和原型中的major同名的屬性,根據原則優先使用自定義屬性。
javascript中的屬性註意事項