作者:蔡麟松_800 | 来源:互联网 | 2023-09-25 19:28
对象对象是什么JavaScript中的对象和其他编程言语中的对象一样能够对比实际上活中的对象来明白它JavaScript中对象的观点能够对比实际生活中实实在在的物体来明白在Java
对象
Javascript中的对象 和其他编程言语中的对象一样 能够对比实际上活中的对象来明白它
Javascript中对象的观点能够对比实际生活中实实在在的物体来明白
在Javascript中 一个对象能够是一个零丁的具有属性和范例的实体 拿它和一个杯子做下类比 一个杯子是一个对象 具有属性 杯子有色彩 图案 分量等等 一样Javascript对象也有属性来定义它的特性
对象的分类
1.内置对象/原生对象
就是Javascript言语预定义的对象 在ECMAScript规范定义 由Javascript诠释器/引擎供应详细完成
2.宿主对象
指的是Javascript运转环境供应的对象 平常是由浏览器厂商供应完成(现在也有自力的Javascript诠释器/引擎供应完成)重要分为BOM和DOM
3.自定义对象
就是由开发人员自立建立的对象
Object对象
-Object对象是什么
Object范例与Array Math等一样都是Javascript的援用范例 不过Object范例是Javascript中一切范例的父级(一切范例的对象都能够运用Object的属性和要领)
Javascript能够经由过程Object的组织函数来建立自定义对象 当以非组织函数情势被挪用时 Object等同于new Object()0
建立对象
运用对象初始化器也被称作经由过程字面值建立对象
/*
1. 对象的初始化器建立体式格局
var 对象名 = {
属性名: 属性值,
要领名: function(){
要领体
}
}
*/
var boj1 = {
name : 'xxx',
age : 38 ,
sayMe : function () {
console.log('我是xxx')
}
}
1.经由过程Javascript供应的预定义范例的组织函数来建立对象
var num = new Number();//Number范例
var str = new String();//String范例
var boo = new Boolean();//Boolean范例
2.经由过程Javascript供应的Object范例的组织函数来建立自定义对象
var obj = new Object();//建立一个自定义对象
Object.create()要领建立一个具有指定原型和若干个指定属性的对象
var 对象名 = Object.create(null) – 建立一个空对象
var 对象名 = Object.create(obj)
obj – 示意另一个对象
特性 – 当前建立的新对象具有与obj对象雷同的属性和要领
var obj = 100;
console.log(obj);//100
obj = {
name : 'xxx',
sayMe : function () {
console.log('这是xxx');
}
};
//{ name: 'xxx', sayMe: [Function: sayMe] }
console.log(obj);
var obj1 = {
name : 'xxx',
sayMe : function () {
console.log('这是xxx')
}
}
console.log(obj1);
var obj2 = obj1;
console.log(obj2);
//修正obj1对象的name属性
obj1.name = 'yyy';
console.log(obj1);
console.log(obj2);
//轮回遍历对象 - for...in 语句
for(var attr in obj1){
console.log(attr);
}
对象的属性
var obj={
name:'xxx',
age:18,
sayMe:function(){
console.log('我是xxx');
}
}
var obj = {
name : 'xxx',
sayMe : function () {
console.log('我是xxx');
}
}
/*
1.对象名 .新的属性名 = 属性值
2.对象名[新的属性名] = 属性值
*/
obj.age = 18;
console.log(obj);
/*
空对象默许没有本身属性和要领(父级Object)
*/
var obj1 = {};
console.log(obj1);
obj1.name = 'yyy';
console.log(obj1);
var obj = {
name : 'xxx',
sayMe : function(){
console.log('我是xxx');
}
}
/*
1.对象名.已存在的属性名 = 属性值
2.对象名[已存在的属性名] = 属性值
*/
obj.name = 'yyy';
console.log(obj);
var obj = {
name : 'xxx',
sayMe : function(){
console.log('我是xxx');
}
}
/*
1.delete 对象名.属性名
2.delete 对象名[属性名]
*/
delete obj.name;
console.log(obj.name);// undefined
能够运用下面四种要领检测对象中是不是存在指定属性:
var obj = {
name : 'xxx',
age : 18
}
console.log(obj.age);// undefined
// 1.推断对象的属性值是不是为 undefined
if (obj.age !== undefined) {
console.log('obj对象的age属性存在...');
} else {
console.log('请先定义obj对象的age属性...');
}
// 2.推断对象的属性值 - 先转换为Boolean范例
if (obj.age) {
console.log('obj对象的age属性存在...');
}
// 3.应用in关键字举行推断
if ('age' in obj) {
console.log('obj对象的age属性存在...');
} else {
console.log('obj对象的age属性不存在...')
}
// 4.Object范例供应了hasOwnProperty()要领
if (obj.hasOwnProperty('age')) {
console.log('obj对象的age属性存在...');
} else {
console.log('obj对象的age属性不存在...')
}
Javascript属性供应了三种原生要领用于遍历或罗列对象的属性:
1.for..in轮回:该要领顺次接见一个对象及其原型链中一切可罗列的属性
2.Object.keys(object)要领:该要领返回一个对象 o 本身包括(不包括原型中)的一切属性的称号的数组
3.Object.getOwnPropertyNames(object)要领:该要领返回一个数组 它包括了对象 o 一切具有的属性(不管是不是可罗列)的称号
对象的要领
对象要领的挪用类似于对象属性的挪用
var obj = {
name : 'xxx',
age : 18,
sayMe : function(){
console.log('我是xxx');
}
}
// 1.对象名.要领名()
obj.sayMe();
// 2.对象名[要领名]()
obj['sayMe']();
var obj = {
name : 'xxx',
age : 18,
sayMe : function(){
console.log('我是xxx');
}
}
// 对象名.新的要领名 = function(){}
obj.sayYou = function(){
console.log('你是yyy');
}
console.log(obj);
var obj = {
name : 'xxx',
age : 18,
sayMe : function(){
console.log('我是xxx');
}
}
// 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();// 要领挪用
}