[TOC]
对象类型
普通对象object
- {属性名:属性值}
- 如果有多对键值对,用逗号隔开
- 属性值如果直接写var obj = {agr:18,sex:man},“man”没有被声明过,会报错
属性名可以说是字符串也可以使数字,如果你添加的属性名不是一个字符串或者数字会被转换为字符串
查:拿到某个属性名的属性值
点语法
- obj.age——>obj的age
中括号语法
- obj[‘age’]——->一定要带引号
如果查找一个不存在的属性名,那结果是undefined
console.log(obj.age); console.log(obj['age']); console.log(obj['sex']); console.log(obj.sex); console.log(obj['0']); // console.log(obj.0);//会报错,因为属性名为数字的时候,不能用点语法 //注意!!!如果你用中括号语法,不加引号,那就当做“变量”去识别 // console.log(obj[age]);//报错 var a = 'age'; var b = a; console.log(obj[a]); console.log(obj[b]); console.log(obj['b']);//undefined //注意!!一些特殊的点 console.log(obj[name]);//xukui console.log(obj[length]);//--->obj[0] console.log(obj.length);//undefined console.log(obj.name);//xukui var name = "name"; console.log(obj[name]);//xukui普通对象-增改
普通对象-删
var obj = {age:18,hobby:‘pingpang’}
- 第一种 假删
- obj.age = null;
- 第二种 真删
- delete obj.age;
- 第一种 假删
-
数组简单了解
数组:【元素,元素,元素】array
var a = 100;
- let a = 200;
- const c = 300;(constant 常态)
- 函数
- class
-
数据转换类型
Number()
- 普通对象 .toString()结果都是固定‘[object object]’
- 在转换为number()
- String()
Boolwan()
var obj={} console.log(Number(obj));//1.obj.toString()-->[object,object]-->NaN var ary1=[];//空数组.toString()-->''-->0 var ary2=[1];//.toString()-->'1'-->1 var ary3=[1,2];//.toString()-->'1,2'-->NaN var ary3=[true];//.toString()-->'true'-->NaN var ary4=[{a:1}];//toString()-->'[object,object]'-->NaN var ary5=[""];//toString()-->""-->0 var ary6=["",""];//toString()-->","-->NaN console.log(Number(ary1));//0 console.log(Number(ary2));//1 console.log(Number(ary3));//NaN console.log(Number(ary4));//NaN console.log(Number(ary5));//0 console.log(Number(ary6));//NaN练习题
<script> console.log(!(!'Number(undefined)')); // 2 console.log(isNaN(Number(!!Number(parseInt('0.8')))));//false //题解: /* parseInt('0.8')-->0 Number(0)--->0 !!0---->false Number(false)--->0 inNaN(0)---->false */ </script>代码运算符(+、-、*、/)
- -、*、/ 正常理解
- 特殊理解,不仅仅是数学相加,如果遇到字符串,就会拼串。 ```html console.log(1 - 1); console.log(1 * 1); console.log(1 / 1); console.log(1 + 1); // 遇到字符串
console.log(1+’1’); console.log(true+’1’); // 特殊记忆 在控制台不能直接这么写,直接{}+1,{}会被忽略,就成了+1,转为数字 // 如果想当成对象去看,那就得加({})+1 console.log({}+1);//‘[objcet objcet]1’ console.log([]+1);//‘1’ console.log([1]+1);//‘11’ console.log([1,1]+1);//‘1.11’
console.log(true+1);//2 console.log(false+1);//1 console.log(null+1);//1
// NaN和任何运算都是NaN console.log(undefiend+1);//NaN console.log(Symbol()+1);//报错
console.log(1-‘3px’);//NaN console.log(1+’3px’);//‘13px’
<a name="h2m0U"></a> ### 基础调试代码 1. 在控制台输出 1. console.log(); 2. 弹框 最终呈现的内容是 字符串 1. alert(‘111’); 1. alert(111); 1. alert( { } ); 1. alert( [ 1 ] ); 3. 只要是点击取消按钮,结果都是null。如果点击确定,是输入框的内容 1. console.log(prompt(‘你好吗?’)); 4. 详细输出 1. var fn = function(){ } 1. console.log(fn); 1. console.dir(fn); 5. confirm 提示框 点击取消结果是false 点击确定结果是true 1. console.log(confirm(你确定要删除吗?)); <a name="NBVJJ"></a> ### 数据类型检测 ```html <script> /* typeof 检测数据类型 + typeof 1 ---> 结果是由引号包裹 */ // 如果检测的是原始值类型,除了null以外都正常 console.log(typeof 1);//'number' console.log(typeof true);//'boolean' console.log(typeof '10px');//'string' console.log(typeof null);//'object'??? /* 为什么typeof null是'object'??其实是一个「bug」 因为typeof 是通过二进制判断的 如果是000开头,那就会被识别为对象,刚好null是64位0 */ console.log(typeof undefined);//'undefined' console.log(typeof Symbol());//'symbol' console.log(typeof 10n);//'bigint' // 如果检测的是对象类型,不能细分对象 console.log(typeof {});//'object' console.log(typeof []);//'object' console.log(typeof true);//'boolean' console.log(typeof typeof true);//'string' console.log(typeof typeof typeof typeof true);//'string' </script>
