1. 程式人生 > >前端開發面試筆試學習--JavaScript01

前端開發面試筆試學習--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])