內置對象/原生對象:瀏覽器
宿主對象:函數
自定義對象優化
Object對象是什麼spa
var 對象名 = { 屬性名 : 屬性值, 方法名 : function(){ 方法體 } }
示例代碼:code
var obj1 = { name : '一花一世界', name1 : '一葉一孤城', soso : function () { console.log('你是哈士奇') } };
利用全部引用類型常見對應的對象 - 就是具備具體的類型對象
利用Object做爲構造函數建立對象圖片
示例代碼:ip
var num = new Number();// Number類型 var num2 = Number(); var str = new String();// String類型 var boo = new Boolean();// Boolean類型 var obj2 = new Object(); var obj3 = Object(); console.log(obj2);// {}// 調用結果爲 { } console.log(obj3);// {}// 調用結果爲 { } var obj4 = new Object(undefined); var obj5 = new Object(null); console.log(obj4);// 調用結果爲 { } console.log(obj5);// 調用結果爲 { }
var 對象名 = Object.create(obj)開發
示例代碼:get
var obj6 = Object.create(null); var obj7 = Object.create(obj1); console.log(obj6);// 調用結果爲 { } console.log(obj7);// 調用結果爲 { }
建立空對象的方式目前有如下幾種
Number,String和Boolean
Array和Object
示例代碼:
// 1. Number類型 var num1 = 100;// 字面量方式 var num2 = new Number();// 構造函數方式 // 2. String類型 var str1 = '一花一世界';// 字面量方式 var str2 = new String();//構造函數方式 // 3.Boolean類型 var boo1 = true;// 字面量方式 var boo2 = new Boolean();// 構造函數方式 // 4.Array類型 var arr1 = []; var arr2 = new Array(); // 5.Object類型 var obj1 = {}; var obj2 = new Object();
示例代碼:
/* 變量聲明並初始化值 */ var obj = 100; /* 輸出調用 */ console.log(obj);// 調用結果爲 100 /* 變量從新賦值爲對象 */ obj = { /* 對象的屬性 */ name : '一花一世界', /* 對象的方法 */ soso : function () { /* 方法體 */ console.log('一葉一孤城'); } }; /* 輸出調用 */ console.log(obj);// 調用結果爲 { name: '一花一世界', soso: [Function: soso] }
示例代碼:
var obj = { neme : '一花一世界', 'Type-Content' : 'text/HTML', sayMe : function () { console.log('一葉一孤城'); } }; console.log(obj.soso);// 調用結果爲 undefined
建立一個對象 - 具備name和age屬性與sayMe()方法
JavaScript找那個具備一個全局對象(Global) - 僅存在與概念
示例代碼:
var obj1 = { name : '一花一世界', age : '有點飄', sayMe : function () { console.log('一葉一孤城'); } }; console.log(Object);// 調用結果爲 [Function: Object] console.log(Global);// 調用結果爲報錯 - ReferenceError: Global is not defined
控制檯調用圖:
示例代碼:
var obj = { neme : '一花一世界', 'Type-Content' : 'text/HTML', sayMe : function () { console.log('一葉一孤城'); } }; console.log(obj.neme);// 調用結果爲 一花一世界
控制檯調用圖:
示例代碼:
var obj = { neme : '一花一世界', 'Type-Content' : 'text/HTML', sayMe : function () { console.log('一葉一孤城'); } }; console.log(obj.neme);// 調用結果爲 一花一世界 console.log(obj['Type-Content']);// 調用結果爲 text/HTML
控制檯調用圖:
示例代碼:
var obj = { name : '一花一世界', sayMe : function(){ console.log('一花一世界'); } } obj.name = '一葉一孤城'; console.log(obj);// 調用結果爲 { name: '一葉一孤城', sayMe: [Function: sayMe] }
示例代碼:
var obj = { name : '一花一世界', sayMe : function(){ console.log('一花一世界'); } } obj['name'] console.log(obj);// 調用結果爲 { name: '一葉一孤城', sayMe: [Function: sayMe] }
示例代碼:
var obj = { name : '一花一世界', sayMe : function(){ console.log('一花一世界'); } } delete obj.name; console.log(obj.name);//調用結果爲 undefined
示例代碼:
var obj = { name : '一花一世界', sayMe : function(){ console.log('一花一世界'); } } delete obj['name']; console.log(obj.name);//調用結果爲 undefined
示例代碼:
var obj = { name : '張無忌', age : 18 } if (obj.age !== undefined) { console.log('obj對象的age屬性存在...'); } else { console.log('請先定義obj對象的age屬性...'); }
示例代碼:
var obj = { name : '張無忌', age : 18 } if (obj.age) { console.log('obj對象的age屬性存在...'); }
示例代碼:
var obj = { name : '張無忌', age : 18 } if ('age' in obj) { console.log('obj對象的age屬性存在...'); } else { console.log('obj對象的age屬性不存在...') }
示例代碼:
var obj = { name : '張無忌', age : 18 } if (obj.hasOwnProperty('age')) { console.log('obj對象的age屬性存在...'); } else { console.log('obj對象的age屬性不存在...') }
示例代碼:
var obj = { name : '一花一世界', age : 18, sayMe : function(){ console.log('一花一世界'); } } // 1.for...in語句 for (var objAttr in obj) { // 經過對象屬性或方法對應的值的類型進行區別 if (obj[objAttr] instanceof Function) { // 當前是對象的方法 obj[objAttr](); } else { // 當前是對象的屬性 console.log(obj[objAttr]); } } // 2.Object類型提供了keys()方法 - 只能遍歷可枚舉的屬性 var arr = Object.keys(obj); for (var v in arr) { var objAttr = arr[v]; // 經過對象屬性或方法對應的值的類型進行區別 if (obj[objAttr] instanceof Function) { // 當前是對象的方法 obj[objAttr](); } else { // 當前是對象的屬性 console.log(obj[objAttr]); } } // 3.Object類型提供了getOwnPropertyNames()方法 - 包括不可枚舉的屬性 var arr = Object.getOwnPropertyNames(obj); for (var v in arr) { var objAttr = arr[v]; // 經過對象屬性或方法對應的值的類型進行區別 if (obj[objAttr] instanceof Function) { // 當前是對象的方法 obj[objAttr](); } else { // 當前是對象的屬性 console.log(obj[objAttr]); } }
示例代碼:
var obj = { name : '一花一世界', age : 18, sayMe : function(){ console.log('一花一世界'); } } // 1.對象名.方法名() obj.sayMe(); // 2.對象名[方法名]() obj['sayMe']();
示例代碼:
var obj = { name : '一花一世界', age : 18, sayMe : function(){ console.log('我是風兒'); } } // 1.對象名.新的方法名 = function(){} obj.sayYou = function(){ console.log('你是沙'); } console.log(obj); // 2.對象名[新的方法名] = function(){}
示例代碼:
var obj = { name : '一花一世界', age : 18, sayMe : function(){ console.log('我是風兒'); } } // 1.對象名.方法名 = function(){} obj.sayMe = function(){ console.log('你是沙'); } console.log(obj); obj.sayMe(); // 2.對象名[方法名] = function(){}
示例代碼:
var obj = { name : '一花一世界', age : 18, sayMe : function(){ console.log('一笑一人生'); } } // 1.delete 對象名.方法名 delete obj.sayMe; // 訪問對象中不存在的方法 -> 報錯(TypeError: obj.sayMe is not a function) // obj.sayMe(); console.log(obj.sayMe);// undefined console.log(obj); // 以屬性是否存在的方式進行判斷 if ('sayMe' in obj) { // 確認目前是一個方法 if (obj.sayMe instanceof Function) { obj.sayMe();// 方法調用 } } // 以上代碼能夠優化爲如下代碼 if ('sayMe' in obj && obj.sayMe instanceof Function) { obj.sayMe();// 方法調用 } // 2.delete 對象名[方法名]