谈谈JavaScript中对象属性及堆栈的的概念

359 阅读3分钟

这是我参与8月更文挑战的第23天,活动详情查看:8月更文挑战

前言

大家好哇,今天我们来谈谈JavaScript中对象属性及堆栈的概念,对于非科班出身的小伙伴而言,这其中的概念还是很容易被搞混的,所以今天我们就来好好谈一下这个问题。

文章目标

先来看一下本文的目标吧,大神请绕道,因为本文基本摘自我刚入行时的笔记哦~

重点

1. 能够获取和设置对象属性的值
2. 能够遍历对象

了解

1. 知道内存中分为栈和堆两个区域

操作对象

操作对象比较简单,熟练基本的操作对象方法即可。

获取对象属性的值

注意: 如果对象中没有的属性,返回的是undefined。

var obj = {
    name: '小明',
    age: 20
}
alert(obj.name)    // '小明'
alert(obj.sex)     // undefined

给对象添加属性并赋值

var obj = {
    name: 'ls'
    age: 20
}
// 给对象添加属性并赋值
obj.sex = '男'
console.log(obj)  // {name: 'ls', age: 28, sex:'男'}

通过中括号语法操作对象的属性

语法:对象 [ '属性名' ]

var stu01 = {
  name:'小白',
  age:28,
  sex:true,
  getInfo:function(){
    return '我的名字叫:'+this.name + ',年龄:'+ this.age + ',性别:' + this.sex
  }
}

获取操作如下:

alert(stu01.name)    // 小白
alert(stu01['name'])    // 小白
alert(stu01.getInfo())    // 我的名字叫小白,年龄28,性别true
alert(stu01['getInfo']())    // 我的名字叫小白,年龄28,性别true

赋值,以下两种方式书写代码的作用是一样的:

stu01.name = '小黑'
stu01['name'] = '小黑'

遍历对象中的所有属性

通过for..in循环,遍历对象的属性

语法: for( var 变量名 in 被遍历的对象){ 循环执行的代码 }

var obj = {
    name: 'zs',
    age: 18,
    sayHi:function(){
        console.log('hi');
    }
};

对象中有几个属性,for循环就会执行几次

循环过程中,会把对象中的属性依次赋值给key变量

在循环中使用中括号语法

for(var key in obj) {
  console.log(key + "==" + obj[key]);
}

删除对象中的某个属性

var obj = {
     name: 'zs',
    age: 18
}
console.log(obj.age)    // 18
delete obj.age
console.log(obj.age)    // undefined
console.log(obj)    // {name: 'zs'}

内存中的栈空间和堆空间

js的所有代码都要加载到内存中执行,而内存中其实也分了区域,比如,内存中有栈 和 堆两个区域

js中的6种数据类型,又分为了两大类: 基本数据类型和引用数据类型

栈相当于是地址,堆相当于是实际存储的地方

  • 基本数据类型存储在栈空间中
  • 引用数据类型存储在堆空间中

图解如下:

栈和堆内存示意图.png

基本数据类型和引用数据类型传参

基本数据类型赋值

var num1 = 1;
var num2;
num2 = num1;  //把num1的值克隆一份赋值给num2
console.log(num2); //1

图解如下: 基本赋值.png

引用数据类型赋值

var obj = {
    name: 'zs'
}
var num2
num2 = obj
console.log(num2) // { name: 'zs'}

图解如下: 引用赋值.png

后记

你好哇,我是南极大冰块,一个技术与颜值成正比的前端工程师,崇尚一针见血的搞定前端问题,希望我的博客有帮助到了你。

关注我,前端路途一起走。嘿哈~😛