<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
//面向对象 OOP
//{} == {} false 两个对象 两个地址 地址比较
//坑:对象中直接把属性当变量用
var sage = 14;
var stu1 = {
sname:"XXX",
sage:11,
//sage1:sage+1, 这样也不行
//sage1:this.sage+1, 这样也不对 不纠结了,估计开发中不会这么用
intro(){
console.log("I am " + sage); //14
console.log("I am " + this.sage); //单用age不行!!!坑,大坑!!!原因在存储上,intro存储在外部!在作用域链上,intro与window形成作用域链!!!这里用stu1也可,但这样不好,不利于维护,开发中不会这样用!最简单的记法:不加this,去window作用域中找;加this,去对象中找
}
};
console.dir(stu1); //输出结构 浏览器做了排序,内存中是没有这个顺序的 本质:关联数组简写方式
console.log(stu1.sname);
stu1.sage += 1;
console.log(stu1.sage);
console.log(stu1.intro());
</script>
</body>
</html>JS——坑3(对象,this)
最新推荐文章于 2024-10-03 12:37:09 发布
本文探讨了JavaScript中面向对象编程的基本概念,并通过实例演示了如何定义对象、使用对象属性及方法,特别是对作用域链的理解,展示了如何访问不同作用域内的变量。
483

被折叠的 条评论
为什么被折叠?



