前端開發面試筆試學習--JavaScript01
1、Js面向物件的幾種方式
1.物件的字面量 var obj = {}
2.建立例項物件 var obj = new Object();
3.建構函式模式 function fn(){} , new fn();
4.工廠模式:用一個函式,通過傳遞引數返回物件。
function fn(params){
var obj =new Object();
obj.params = params;
return obj;
},
fn(params);
5.原型模式:
function clock(hour){} fn.prototype.hour = 0; new clock();
首先,每個函式都有一個prototype(原型)屬性,這個指標指向的就是clock.prototype物件。
而這個原型物件在預設的時候有一個屬性constructor,指向clock,這個屬性可讀可寫。
而當我們在例項化一個物件的時候,例項newClock除了具有建構函式定義的屬性和方法外(注意,只是建構函式中的),還有一個指向建構函式的原型的指標,ECMAScript管他叫[[prototype]],這樣例項化物件的時候,原型物件的方法並沒有在某個具體的例項中,因為原型沒有被例項。
2、 Javascipt的本地物件,內地物件和宿主物件
本地物件:Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError, 簡單來說,本地物件就是 ECMA-262 定義的類.
內建物件:ECMA-262 把內建物件(built-in object)定義為“由 ECMAScript 實現提供的、獨立於宿主環境的所有物件,在 ECMAScript 程式開始執行時出現”。這意味著開發者不必明確例項化內建物件,它已被例項化了。
同樣是“獨立於宿主環境”。根據定義我們似乎很難分清“內建物件”與“本地物件”的區別。而ECMA-262 只定義了兩個內建物件,即 Global 和 Math (它們也是本地物件,根據定義,每個內建物件都是本地物件)。
如此就可以理解了。內建物件是本地物件的一種。而其包含的兩種物件中,Math物件我們經常用到,可這個Global物件是啥東西呢?
Global物件是ECMAScript中最特別的物件,因為實際上它根本不存在,有點玩人的意思。大家要清楚,在ECMAScript中,不存在獨立的函式,所有函式都必須是某個物件的方法。
類似於isNaN()、parseInt()和parseFloat()方法等,看起來都是函式,而實際上,它們都是Global物件的方法。而且Global物件的方法還不止這些.
宿主物件:ECMAScript中的“宿主”就是我們網頁的執行環境,即“作業系統”和“瀏覽器”。所有非本地物件都是宿主物件(host object),即由 ECMAScript 實現的宿主環境提供的物件。所有的BOM和DOM物件都是宿主物件。因為其對於不同的“宿主”環境所展示的內容不同。其實說白了就是,ECMAScript官方未定義的物件都屬於宿主物件,因為其未定義的物件大多數是自己通過ECMAScript程式建立的物件。自定義的物件也是宿主物件。
3、物件中屬性值的訪問問題
this.alarmLevelData=[
{value:12340, name:'一級告警'},
{value:11890, name:'二級告警'},
{value:10312, name:'三級告警'},
{value:9255, name:'四級告警'}
];
console.log('test',this.alarmLevelData[1].value)
舉例
"data": {
"1": "29",
"2": "6",
"3": "6",
"4": "13"
}
let j=1;
console.log('thisobject',thisobject)
console.log('thisobject.j',thisobject.j)
//上面這種訪問方法時錯誤的,原因,物件後面不能跟.變數來訪問屬性值
//解決方法:把變數放到中括號中,或者直接把屬性名放到中括號中
console.log('thisobject.j',thisobject[1])