Javascript 对象基本用法

195 阅读3分钟

变量声明

  • Var声名

声明一个变量,可同时将其初始化为一个值。

varnameN

变量名。变量名可以定义为任何合法标识符。

valueN

变量的初始化值。该值可以是任何合法的表达式。默认值为 undefined。

  • Let声明

语句声明一个块级作用域的本地变量,并且可选的将其初始化为一个值。

var1, var2, …, varN

变量名。必须是合法的标识符。

value1, value2, …, valueN

变量的初始值。可以是任意合法的表达式。

  • Const声明

声明一个只读的命名常量。 常量是块级作用域,很像使用let语句定义的变量。常量的值不能通过重新赋值来改变,并且不能重新声明。

nameN

常量名称,可以是任意合法的标识符。

valueN

常量值,可以是任意合法的表达式。

Javascript中的基本数据类型

  • 数字Number
  • 字符串String
  • 布尔Bool
  • 符号Symbool
  • Undefined
  • Null
  • Object

数据类型的前六种都比较好理解,而Object属于复杂类型,所以这里我们重点讨论Object对象

Javascript对象

定义:

  1. 无序的数据集合;
  2. 键值对的集合

写法:

1. let obj = {'name' = 'frank', 'age' = '18'}
2. let obj = new Object({'name':'frank'})
 
console.log({'name':'frank','age':'18'})

提示:

  1. 键名是字符串,不是标识符,可以包括任意字符;
  2. 引号可以省略,但省略之后也还是字符串,键名也还是字符串不是表示符; 内容2:如何删除对象的属性

变量做属性名:

let a = 'xxx'
var obj = {[a]:'xxx'}

这里就需要注意几点:

  1. 不加'[]'的属性名会自动变成字符串;
  2. 加了'[]'则会变成变量求值;
  3. 如果值不是字符串,就会变成字符串;

原型Prototype

由于原型比较复杂,这里不一一赘述,只需要了解以下几点就行:

  1. 所有函数一出生就有一个 prototype 属性
  2. 每个对象都有原型,除了根对象 Object.prototype 比较特殊,原型为 null
  3. Object.prototype 是所有对象的原型(除了它自己),但 Object.prototype 有可能不是第一层原型,而是第二层原型,比如 arr 的第一层原型是 Array.prototype,第二层原型才是 Object.prototye

增删改查

如何删除对象的属性

方法:

  1.  delet obj.xxx  // 或者也可以 delete obj][xxx]
    
  2.    obj.xxx = undefined
    

注意:

  • 方法一是彻底删除的属性名与属性值;
  • 方法二只是说删除的属性值,让这个属性名对应的属性值为undefined;

如何查看对的属性

  1.  Object.keys() // 查看属性名
    
  2. Object.values()  // 查看属性值
    
  3.  console.dir()
    
  4.  obj.__proto__   // 查看隐藏属性
    
  5.  'xxx'  in  obj   // 看bool值判断是否存在
    
  6.  obj。hasOwnproperty('xxxx')   // 看bool值判断是否存在
    
  • 'name' in obj和obj.hasOwnProperty('name') 的区别

'name' in obj是指name这个属性是否在obj上,只要可以找到,bool值就是true,并不在乎是否在自身找到还是在原型中找到; obj.hasOwnProperty('name')是指这个属性是不是在自己身上,如果自身没,有bool值就是flase,也不是去原型中找。

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

增加对象的属性

  • 直接赋值
let obj = ('name' = 'wang' )
  • 批量赋值
Object.assign(obj,{p1:1,p2:2,p3:3,.......})

修改对象的属性

修改对象的属性与增加对象属性差不多,

  obj.name = 'xxx'

这里讲一下修改隐藏属性

  1. 可以通过__proto__
let obj = {name:'frank'}
let obj2 = {name: 'jack'}
let common = {kind: 'human'}
obj.__proto__ = common
obj2.__proto__ = common

  1. 通过Object.create
let obj = Object.create(common)
obj.name = 'frank'
let obj2 = Object.create(common)
obj2.name = 'jack'