(js学习)对象格式深入了解

什么是对象

1.什么是对象

对象是属性的无序集合,每个属性都有一个名/值对,属性的名称是一字符串
{x:“123”,y:“hello”,z:123}

2.对象的种类

(1).内置对象(native object)是由CMAScript规范定义的对象或类,例如:数组,函数,日期和正则表达式都是内置对象
(2).宿主对象(host object)是由JavaScript解释器所嵌入的宿主环境(比如web浏览器)定义的,常见的宿主对象有Window .document等
(3).自定义对象(user-defined object)是由运行中的JavaScript代码创建的对象

创建对象的方式

1.对象直接量

	var	empty = {};	//没有任何属性的对象
	var point ={
		x:0,
		y:0
	};	//两个属性
	var point2 = {
		x:point.x,
		y:point.y + 1
  	};	//更复杂的值,x的值是0,y的值是1
	var book = {
		"main title":"javascript",	//属性名字里面有空格,必须用字符串表示
		"sub - title":"对象课程",	//属性名字里有连字符,必须用字符串表示
		"for":"基础学院",				//“for”是保留字,因此必须用引号
		author:{		//这个属性的值是一个对象
			firstname:"你",		//注意,这里的属性名没有引号
			surname:"好"
		}	
	}

属性名可以是标识符(即变量符号a,b,c )也可以是字符串(包括空字符串)
属性值可以是任意类型的JavaScript表达式,表达式的值就是这个属性的值

2.通过new指令创建对象

关键字new后跟随一个函数调用,这里的函数称作构造函数(constructor),构造函数用以初始化一个新创建的对象。JavaScript语言核心中的原始类型都包含内置构造函数

	var	o = new Object(); 	//创建一个空对象,和{}一样
	var	a = new Arrayt();		//创建一个空数组,和[]一样
	var	d = new Datet();		//创建一个表示当前时间的Date对象
	var	f = new RegExp("js");		//创建一个可以进行模式匹配的EegExp对象

3.对象属性的查询

可以通过点(.)或者方括号( [ ] )运算符来获取属性的值
点号左侧一定要是一个对象,右侧必须是一个以属性名称命名的简
简单标识符(即变量,不能使用字符串),所以一但元素的某个属性名称是一个包含里空格的字符串,就不能使用点号来查询

	var author = book.author;//得到book的“author”属性
	var name = author.surname//得到获得author的“surname”属性

对象的左侧一定要是一个对象,右侧必须是一个计算结果为字符串()或是可以转换为字符串的值的表达式,这个字符串就是属性的名字

	var s="main title";
	var title = book["main title"];		//得到book的“main title”属性
	var title = book[s];				//得到book的“main title”属性

4.对象属性的设置

通过点(.)或方括号([ ])运算符来获取属性的名称结合赋值操作符(=)实现属性值的设置
{ }[" 属性名称 "] = 属性值
{ } . 属性名称 = 属性值

对象的属性的常用操作

1.删除对象属性

delete运算符可以删除对象的属性,他的操作数应当是一个属性访问表达式
需要注意,delete只是断开属性与宿主对象的联系,而不会去操作内存中对象的属性的值的存在与否
在这里插入图片描述

2. 检测对象属性之in运算符

in运算符左侧是属性名,右侧是对象,如果对象的自有属性或继承属性中包含这个属性则返回true,不包含则返回false
在这里插入图片描述

3.检测对象属性之hasOwnPreperty()

该方法用于检测给定的名字是否是对象的自有熟悉,对于不存在的属性和继承属性它将返回false

var o = {
	x:1	
}
o.hasOwnPreperty("x");	//true:o有一个自有属性
o.hasOwnPreperty("y");	//false:o中不存在属性y
o.hasOwnPreperty("toString");	//false:toString是继承属性

4.枚举对象属性之propertylsEnumerable()

除了检测对象的属性是否存在,我们还会经常遍历对象的属性,通常使用for/in循环遍历,for/in循环可以在循环体中遍历对象中所有可枚举的属性(包括自有属性和继承的属性)对象继承的内置方法不可枚举的,但在代码中给对象添加的属性都是可以枚举的

	var o ={
		x:1,
		y:2,
		z:3
	};	//三个可枚举的自有属性
	
	o.propertylsEnumerable("toString")	// ==> false,不可枚举

	for(p in o){
		console.log(p);	//输出x,y,z,不会输出tostring
	}//遍历属性
	

对象的属性的特性

1.对象属性的特性

属性的特性所服务的对象是JavaScript的解析引擎,是JavaScript引擎的内部值,所以作为程序员是无法直接获取到的,在JavaScript中的对象的属性有两种,分别是数据属性访问属性。为了表示特性是内部之,该规范把他们放在来两对方括号中,如[[ Enumerable]]

数据属性包含一个数据值的位置,在这个位置可以读取和写入值,数据属性有4个描述其行为的特征

  • [ [ Configurable ] ]:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性。像下面例子中那样直接在对象上定义的属性,他们的这个特性默认值为true
  • [ [ Enumerable ] ]:表示能否通过for-in 循环返回属性。像下面例子中那样直接在对象上定义的属性,他们的这个特性默认值为true
  • [ [ Writable ] ]:表示能否修改属性的值。像下面例子中那样直接在对象上定义的属性,他们的这个特性默认值为true
  • [ [ Value ] ]:包含这个属性的数据值。读取属性值的时候,从这个位置读:写入属性值的时候,把新值保存在这个位置。这个特性的默认值为undefined
	var	empty = {};	//没有任何属性的对象
	var point ={
		x:0,
		y:0
	};	//两个属性
	var point2 = {
		x:point.x,
		y:point.y + 1
  	};	//更复杂的值,x的值是0,y的值是1

2.获取对象属性的特性Object.getOwnPropertyDescriptor()

var o ={
	x:1,
	y:2,
	z:3
};
console.log(Object.getOwnPropertyDescriptor(o,"x"));

在这里插入图片描述
Object.getOwnPropertyDescriptor()只能得到自有属性的描述符。想要获得继承属性的特性,需要遍历原型链

3.设置对象属性的特性defineProperty()

要想设置属性的特性,或者想让新建属性具有某种特性,则需要调用Object.defineProperty(),传入要修改的对象,创建或修改的属性的名称以及属性描述符对象

    var o = {
        x:1,
        y:2,
        z:3
    };// 三个可枚举的自有属性

    console.log(Object.getOwnPropertyDescriptor(o,"x"));
    for(let i in o){
        console.log("属性名称为" + i + "的值为:" + o[i]);//x,y,z都输出来了
    }
    Object.defineProperty(o,"x",{
        enumerable:false
    });
    console.log("重新设置了属性的特性");
    console.log(Object.getOwnPropertyDescriptor(o,"x"));
    for(let i in o){
        console.log("属性名称为" + i + "的值为:" + o[i]);//x不会输出来,因为x已经无法遍历了
    }

在这里插入图片描述

对象的方法

1.对象的方法

对象的属性值的类型可以任意,如果某个对象的属性的值的类型是函数的话,那么我们把这个值为函数的属性名称称之为对象的方法

var o = {
	x:"hello",
	y:function(str){
		console.log(str);
	}
}
o.y("world");

输出world,属性y是对象o的方法

2.对象的方法this

函数中的this对象是在运行时基于函数的执行环境绑定的:在全局函数中,this等于window,而当函数被作为某个对象的方法调用是,this等于那个对象,不过,匿名函数的执行环境具有全局性,因此其this对象通常指向window

var o = {
	x:"hello",
	y:function(str){
		console.log(this);//输出对象o
	}
}
o.y();
function fn(){
	console.log(this);//输出对象window
}
fn();

在这里插入图片描述

3.对象访问器属性之getter和setter

访问器属性不包含数据值,他们包含一对getter和setter函数(不过,这两个函数都不是必须的)。在读取访问器属性时,会调用getter函数,这个函数负责返回有效的值;写入访问器属性时,会调用setter函数并传入新值,这个函数负责决定如何处理数据

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值