热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JavaScript...对象...

对象对象是什么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()要领

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();// 要领挪用
}

推荐阅读
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
author-avatar
蔡麟松_800
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有