vb6 方法‘ ’作用于对象 失败_JS 对象基本用法

45fed9607443cb502265bb25125d0c9d.png

JavaScript有七种数据类型,分别为number、string、symbol、bool、undefined、null和object,其中object是唯一一种复杂类型。

一、声明对象的两种语法

object可以被定义成无序的数据集合,也可以被定义成键值对的集合,下面是它的两种写法:

  • 这是一种常用的简写方式,‘name’和‘age’是键(key),‘Bob’和‘18’是值(value)
let obj ={'name':'Bob','age':'18'}
  • 这是正规的写法
let obj = new Object({'name':'Bob','age':'18'})
  • 注意:(1)键名是字符串,可以包含任意字符,不是标识符;

(2)引号可以省略,但省略后就只能写标识符,且引号省略,键名仍为字符串。

94f542cc78d4116fb8b15cb30677fae5.png
Object.keys(obj)可以得到obj所有的key

二、如何删除对象的属性

使用delete操作符来进行删除操作,声明一个对象obj,包含属性xxx

  • 使用delete http://obj.xxx或delete obj['xxx']即可删除obj的xxx属性;
  • 使用obj.xxx = undefined ,属性名还在,但是值为undefined ;
  • 'xxx' in obj 用来判断obj中是否还含有xxx属性,返回值为true和false;
  • 'xxx' in obj && obj.xxx === undefined,含有属性名但是值为undefined;
  • 不能使用http://obj.xxx === undefined来判断xxx是否为obj的属性。

三、如何查看对象的属性

  1. 查看自身所有属性:Object.keys(obj);
  2. 查看自身+共有属性:console.dir(obj)//也可以使用Object.keys 依次打印出obj.__proto__;
  3. 判断属性xxx是自身的还是共有的:obj.hasOwnproperty('xxx');
  4. 查看属性的两种方法:(1)中括号语法:obj['key];(2)点语法:obj.key
  5. 注意:(1)obj[key]与obj['key']是不同的,前者的key是变量,而变量key的值不一定为‘key’,在使用时要注意区分二者的用法。

(2)每个对象都有原型,原型作为对象也有原型,只是为null;

(3)定义一个对象obj={},它的原型为所有对象的原型,这个对象的原型包含所有对象的共有属性,是对象的根。

四、如何修改或增加对象的属性

1、直接赋值:name均为字符串

let obj = {name : 'Alice'}
obj.name='Alice'
obj['name']='Alice'
obj['na'+'me'] = 'Alice'
---------------------------------------------------------------------------------------------------
let key = 'name'; obj[key] = 'Alice'
//obj.key 等价于 obj['key'],因此下面这条语句通常情况下是错误的
let key = 'name'; obj.key = 'Alice' 

2、批量赋值:

Object.assign(obj,{name:Alice,age:18})

3、更改共有属性(把属性xxx改为属性yyy)

(1)obj.__proto__['xxx'] = 'yyy'(不推荐使用)

(2)Object.prototype['xxx'] = 'yyy'

4、更改原型(把obj的原型改为common)

(1)obj.__proto__ = common(不推荐使用)

(2)let obj = Object.create(common)

五、补充知识点

'name' in obj和obj.hasOwnProperty('name') 的区别:

先来分别说一下in运算符和hasOwnProperty方法:

(1)in:如果指定的属性在指定的对象或其原型链中,则in运算符返回true

(2)hasOwnProperty:所有继承了Object的对象都会继承到hasOwnProperty方法,hasOwnProperty()方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键)。

二者区别在于hasOwnProperty方法会忽略掉那些从原型链上继承到的属性,也就是说如果name是对象从原型链上继承到的属性,那么使用in运算符,结果会返回true,而使用hasOwnProperty方法,结果会返回false。

e01c68d7aa09295f447a6d82c30d7fce.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值