理順 JavaScript (14) – constructor 與 instanceof

來源:互聯網
上載者:User
重看前面的例子: 明明是個函數, 怎麼就成了對象?
function MyObj(a, b) {  this.x = a;  this.y = b;}var obj = new MyObj(11, 22);alert(obj.x);      //11alert(obj.y);      //22alert(typeof obj); //object//一個對象的建立要通過建構函式, 有了建構函式就不難成為對象; //用 new 關鍵字調用函數, JavaScript 就會建立一個對象, 並把該函數當作對象的建構函式.//這就像 String 類的建構函式是 String()、Array 類的建立函數是 Array() ...

每個類的建構函式的名稱肯定不一樣, 但可以用 constructor 泛指它們

var str = new String();alert(str.constructor); /* 將會輸出如下:function String() { [native code] } 不過它沒給我們看到具體的實現代碼, 只有自訂的才會看到 */var arr = new Array();alert(arr.constructor); /* 將會輸出如下:function Array() { [native code] } */function MyObj(a, b) {  this.x = a;  this.y = b;}var obj = new MyObj(11, 22);alert(obj.constructor); /* 將會輸出如下:function MyObj(a, b) {  this.x = a;  this.y = b;}*/

判斷一個對象所屬的類(方法一)

//通過上面手段, 可以判斷一個對象到底是屬於哪一個類var str, arr, s;str = new String();alert(str.constructor == String); //truearr = new Array();alert(arr.constructor == Array); //true/* 但這會有個問題, 譬如一個不是對象的字串也會返回 true */s = 'ABC';alert(s.constructor == String); //true//解決這個問題當然可以再加條件, 但不如直接用下一個方法

判斷一個對象所屬的類(方法二: 使用 instanceof 關鍵字)

var str, arr, str;str = new String();alert(str instanceof String); //truearr = new Array();alert(arr instanceof Array);  //truestr = 'ABC';alert(str instanceof String); //false/* 但這也會有個問題, 因為 Object 是所有類的祖先 ... */str = new String();alert(str instanceof Object); //true

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.