内置对象/原生对象:浏览器
宿主对象:函数
自定义对象优化
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 对象名[方法名]