JavaScript创建、访问对象,删除、检测对象属性的一些总结

it2024-07-31  38

JavaScript中的object(对象)

对象object为什么要有对象的存在?对象是什么?对象属性对象方法 创建JavaScript对象字面量方式Object构造函数创建 为对象添加属性对象.属性名 = 属性值对象["属性名"] = 属性值 访问对象的属性.访问方式 对象.属性名[]访问 对象["属性名"] 删除对象属性检测对象属性

对象object

要学习js的对象,基本理论需要了解,以下几点阐述js对象:

为什么要有对象的存在?

首先js的数据类型可以分为两类,一类是引用类型,一类是基本数据类型;基本数据类型包括null,undefined,number,string,boolean这五种类型。这些数据类型都是独立存在的,而我们在js当中需要很多的变量,那就有很多类型的存在。这并不利于我们的开发,所以我们需要一个容器来承载这些数据,此时对象就诞生了,对象就像是一个塑料袋,可以放东西(任意数据类型)

对象是什么?

万物皆对象,所有的JavaScript值,除了原始值(没有属性或者方法的值),都是对象 。

举个例子来说明原始值:var x = 3.14 x是一个变量,也是对象,但是3.14是一个原始值,这不能改变,也就是说你可以改变x的值,但是3.14你改变不了。

对象是包含变量的变量,对象也是变量,但是对象能够包含多个值。

对象属性

var meili = {name:"yang",age:16,job:"boss"};

对象:meili 既是对象也是变量。 对象的属性被放在{}中,属性名与属性值用":“分割,属性之间用”,"分割。 属性书写格式{key1:value1,key2:value2,…}

对象方法

对象方法就是可以在对象上执行的动作,也就是对象中的某个属性是函数,这里的函数我们又称之为方法。

var meili = {name:"yang",age:16,job:"boss" ,sayName:function(){console.log(this.name)}};

对象meili中的sayName属性值就是一个方法,也是一个函数对象。

创建JavaScript对象

了解对象以后,我们得学会创建,才能使用它呢! 那么创建对象的方式有6种,Object构造函数创建、字面量、工厂模式,构造函数模式、原型模式、混合模式。这里我们介绍前两种。

字面量方式

在创建对象的同时给对象添加属性

//属性名不需要加引号,特殊字符需要通过[]操作符为对象添加属性时,属性名称可以是任何字符串(包括只包含空格的字符串和空字符串); var meili = {name:"yang",age:16,job:"boss"};

在创建变量"meili"的同时,给meili添加了name,age,job等相关属性。

Object构造函数创建

先声明一个对象,再为对象添加属性

var meili = new Object(); meili.name = "yang"; meili.age = 16; meili.job = "boss" meili.sayName = function(){console.log(this.name)};

为对象添加属性

对象.属性名 = 属性值

//通过.操作符为对象添加属性时,属性名称必须是合法的标识符名称;如果属性名包含非法的标识符字符,则只能采用obj[“key”]的形式; var obj ={}; obj.name="meili"; obj.age = "16"; console.log(obj)//查看是否添加成功 //{ name: 'meili', age: '16' }//添加成功

对象[“属性名”] = 属性值

obj["job"]="boss"; console.log(obj)//查看是否添加成功 检测属性方法1 //{ name: 'meili', age: '16', job: 'boss' }//添加成功 //检测属性方法2 (“属性值” in 对象) console.log("name" in obj);//true 属性存在

访问对象的属性

.访问方式 对象.属性名

console.log(obj.name) //{ name: 'meili'}

[]访问 对象[“属性名”]

console.log(obj["name"])//{ name: 'meili'}

注意: 如果我给obj属性name赋予了一个新的变量

var a = "name";

怎么结合a和[]访问到obj的name属性

console.log(obj[a])

这里obj[a] = obj[“name”],!!!切忌写成obj[“a”]

删除对象属性

delete只是断开了属性和宿主对象的联系,而不会操作属性中的属性,并且delete只会删除自有属性,不能删除继承属性,为了防止内存泄漏,遍历对象中的属性,依次删除所有属性。 语法:delete 对象.属性名

delete obj.name;//true console.log(obj.hasOwnProperty("name"))//false 已删除

检测对象属性

in 检测某属性是否是对象的自有属性或者是继承属性 console.log("name" in obj);//true 属性存在 Object.prototype.hasOwnProperty()检测给定的属性是否是对象的自有属性,对于继承属性将返回false console.log(obj.hasOwnProperty("name"))//false 已删除 Object.prototype.propertyIsEnumerable()检测给定的属性是否是该对象的自有属性,且该属性是可枚举的。通常用js代码创建的属性都是可枚举的,但是可以使用特殊的方法改变可枚举性。 console.log(r.propertyIsEnumerable("toString"))
最新回复(0)