JS 对象基本用法

2023-06-05 0 733

JS第一类Object是惟一一类繁杂类别,它是失序的统计数据子集,也是数组对子集。

新闻稿:

第一类的新闻稿形式有三种,如下表所示:

let obj={“name”:”frank”,”age”:18} let obj=new Object({“name”:”frank”,”age”:18})

前者是单纯的读法,前者是通常透过缺省建立的读法。那时通常用前者,即使较为方便快捷,但前者也须要晓得。须要特别注意的技术细节有呵呵以下几点:

1、键Avold数组,并非URL,能包涵任一字符串。

2、标点符号能略去,略去后就根本无法写URL。

3、即使标点符号略去了,键名也却是数组,这一点儿很关键,须要谨记。

每两个键,叫作第一类的特性名,每两个键相关联的值,叫作第一类的特性值。

透过Object.keys(obj),能获得obj的大部份key。

表达式能做特性名,比如:

let p1=name let obj={[p1]:frank}这样写,特性名叫‘name’ 假如写出:let obj={p1:frank},这是错的,特性Avoldp1

特别注意:

未加[]的特性二百六十名手动变为数组。

加了[]则会当作表达式解释器。

值假如并非数组,则会手动变为数组。

第一类的暗藏特性:

1、JS中每两个第一类都有两个暗藏特性。

2、那个暗藏特性存储着共计特性共同组成的第一类的门牌号。

3、那个共计特性共同组成的第一类叫作原型。

4、暗藏特性存储着原型的门牌号。

增删改查:

一、删特性:

delete http://obj.xxx或者delete obj[“xxx”],此特性删的是特性名和特性值,假如使用obj[“xxx”]=undefined那个方法,只是删除特性值,特性名还是存在的,所以通常不推荐那个删除方法。

当删除特性以后,须要判断该第一类是否含有该特性,能用以下方法判断:

xxx in obj===false–不含特性名

xxx in obj && obj.xxx===undefined—含有特性名,但值为undefined

特别注意obj.xxx===undefined不能判断xxx是否为obj的特性。

二、查特性(读特性):

Object.keys(obj)–查看自身大部份特性。

console.dir(obj)\或者一次用Object.keys打印出obj._proto__

–查看自身+共计特性

obj.hasOwnProperty(toString)–判断一个特性是自身的却是共计的。

原型:(每个第一类都有原型)

1、原型里存着第一类的共计特性。

2、比如obj的原型就是两个第一类。

3、obj._proto_存着那个第一类的门牌号。

4、那个第一类里有toString/constructor/valueOf等特性。

特别注意:第一类的原型也是第一类

1、所以第一类的原型也有原型。

2、obj={}的原型即为大部份第一类的原型。(普通第一类,最基础的第一类)

3、那个原型也包涵大部份第一类的共计特性,是第一类的根。

4、那个原型也有原型,是null。

特别注意查看特性的时候,有三种方法:

1、obj[key]

2、obj.key

,所以这种方法须要特别注意,不要写错了,通常特性名都是数组。

三、修改或增加特性(写特性)

1、直接赋值:

let obj={name:frank} obj.name=jack obj[name]=jo obj[na+me]=ben

2、批量赋值:

Object.assign(obj,{age:18,gender:man})

特别注意,我们无法透过自身修改或增加共计属性,比如:

let obj={},obj2={} obj.toString=xxx只会在改obj自身特性 obj2.toString却是在原型上

假如确实须要修改或增加原型上的特性,那就根本无法使用如下表所示方法:

obj.__proto__.toString=xxx//不推荐用__proto__ 或者 Object.prototype.toString=xxx//推荐使用那个prototype 通常来说,不要修改原型,会引起很多的问题。

最后,特别注意一点儿,name in obj和obj.hasOwnProperty(name)是不同的,两者的区别是:

前者是判断两个特性是自身的却是共计的,而前者,则是判断那个第一类是否含有那个特性,但,你并不晓得,它是属于自身的却是共计的。所以,这里须要特别注意区分这两者的区别。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务