栈内存 堆内存
/* 引用数据类型 会开辟一个内存 (栈内存(内存地址),堆内存(内存的值))*/
let obj1={name:'zhangsan',age:18}
let obj2={}
/* obj1的栈内存的地址给了obj2 */
obj2=obj1
/*obj2把obj1的堆内存的name值 改编成 lili */
obj2.name='lili'
/* 所以obj1和obj2的值都是一样的,都是obj1的堆内存的值*/
console.log(obj1);
console.log(obj2);
面向对象
/* 构造函数的方式创建对象 */
/* let obj =new Object();
obj.name='TT'
obj.age=20
obj.kaiche=function(){
document.write(`${obj.name}${obj.age}开车`);
}
obj.kaiche() */
/* 字面量方式创建对象 */
/* 对象定义的一种简写形式 */
/*简化创建包含大量属性的对象的过程*/
/*在为函数传递大量可选参数时,可考虑使用对象字面量*/
let obj={
'name':'TT',
'age':'30',
'kaiche':function(){
document.write(`${this.name}${this.age}开车`);
}
}
obj.kaiche()
console.log(obj);
const
<script>
/* var let */
/* let不能重复定义 let具有块级作用域 (暂时性的死区) let不能变量提升 */
/* 定义常量 (不能给常量重复的赋值) */
const url='http://'
/* 定义对象 引用数据类型 会开辟一个堆内存,内存地址不会发生变化*/
/* 地址不会被改变就不会报错 */
const obj={
name:'zhangsan'
}
obj.name='lisi'
obj.age=20
/* 改变obj的内存地址会报错 */
/* let obj2={}
obj=obj2 */
console.log(obj);
</script>