//var 變量X --> 對象 --> 構造器 --> 原型對象 function Person(){}; var stu = new Person(); //var stu = new Person.constructor();//等效 //instanceof:用來肯定一個實例是不是由特定函數構造器所建立的;還能夠用於判斷函數是否繼承了其原型鏈中任何對象(必需要了解:原型鏈) stu instanceof Person;//true typeof stu; // "object" stu.prototype; //undefined stu.constructor; // f Person(){}
var 變量X --> 對象 --> 構造器 --> 原型對象 javascript
instanceof:java
1.用來肯定一個實例是不是由特定函數構造器所建立的;chrome
2.還能夠用於判斷函數是否繼承了其原型鏈中任何對象(必需要了解:原型鏈)數組
function Person(){this.name}; function Student(){this.school}; Student.prototype = new Person();//原型鏈,實現繼承 /* 注意: 強烈不推薦: 父類原型直接賦值給子類原型,不然子類原型上的任何修改都將會影響到父類的原型,由於他們是同一個對象 但也有的好處:全部原型中繼承的函數都是實時更新的(live-update) Eg:Student.prototype = Person.prototype; */ var stu = new Student(); console.log("stu instanceof Student:",stu instanceof Student);//true console.log("stu instanceof Person:",stu instanceof Person);//true //////////////////////|分隔符|///////////////////// function a(){} (new a()) instanceof Function //false function a(){} (new a()) instanceof a // true function a(){} (new a()) instanceof Object // true
hasOwnProperty(item):
瀏覽器
objectInstance
.hasOwnProperty(item))
//用於判斷一個屬性是不是對象實例定義的,仍是從原型導入的
函數
//擴展:對JavaScript原生對象的擴展 //原理:原型對象 Object.prototype.keys = function(){ var keys = []; for(var item in this) if(this.hasOwnProperty(item))//用於判斷一個屬性是不是對象實例定義的,仍是從原型導入的 keys.push(item); return keys; } var obj = {"name":"johnny","age":21}; obj.keys();//["name"."age"]
ECMAScript中的(六大)基本數據類型:this
1.簡單數據類型spa
Undefined、Null、Boolean、Number、Stringprototype
2.複雜數據類型code
Object
備註:
ECMAScript不支持任何建立自定義的機制,而全部值都最終都將是上述6種數據類型之一。
但因爲ECMAScript數據類型具備動態性,所以便沒有再定義其餘數據類型的必要了。
//變量的動態性:這意味着相同的變量可用做不一樣的類型: var x // x 爲 undefined var x = 6; // x 爲數字 var x = "Bill"; // x 爲字符串
typeof(A):檢測給定變量的數據類型----typeof
函數對象:typeof(function a(){}) //"function" 說明: 1.在safari、chrome中,返回「function」,其餘瀏覽器中返回「object」。 2.從技術角度講,函數在ECMAScript中是對象,不是一種數據類型。 3.然而,函數也確實有一些特殊的屬性。所以經過typeof操做符區分函數和其餘對象也是必要的。 對象:typeof({}) //"object" typeof(null) //"object" 數組對象:typeof([]) //"object" undefined:typeof(undefined) //"undefined"(即是變量未定義,也可對某變量賦undefined爲具體值) 說明: 1.undefined派生自null 2.關於四大值屬性(Infinity、NaN、undefined、null字面量),詳見MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects 字符串:typeof("") //"string" 數值:typeof(34) // "number" typeof(NaN) // "number" 布爾:typeof(true) //"boolean"
參考文獻