JS之面向对象:对象属性

前几个月通过腾讯课堂平台报名了JS高级开发课程,学习了 ES5|ES6|React,在课堂里面记到了许多知识点,便存放在有道云笔记,后觉得年龄逐渐变大,感觉也就没有必要藏着掖着 慢慢搬出来留给有需要的人吧

对象属性 【JS之面向对象】

一、数据类型

   一、什么是数据类型?答:数据类型【引用类型的数据是放在堆里面,基础数据也是值类型放在栈里面】
   二、用于的业务场景?答:申明变量时使用不同需要,使用不同变量关键词
   三、引用类型与基本的区别? 答:基本类型 是不可发生改变,而引用类型是可以发生变化的,重要:值存放的位置
   四、比较,是否两个值是否相等?答:基础类型的比较是值的比较,引用数据类型为引用的比较,TypeOf 【不多】

   类型分为 
        1. 基础类型 【字符串 string、数字 number、布尔 、未定义 Undefined、ES6:[ Symbol ]  】
           var str = "123";
           var num = 1;
           var bol = true;
           var km = null; 
           var sym = Symbol('name'); //外语:森波, ES6 里面的独一无二,如果有两个Name是一样的,值都是不同的
        2.引用类型 【数组 Array、对象 Object、函数 Funtion 】 
           var arry = new Arry();
           var model = {};
           var fun = function(){}; 
          
           注意:引用类型的数据是放在堆里面,基础数据也是值【基础类型】类型放在栈里面,与 C#/NET 分类不同
		  :引用类型存储值是可变的,大小不定, 值会在堆建立新空间 , 就像于赋值,而栈的引用地址会发生改变
              :引用类型同时存储在栈和堆内存中里面的对象【指针 与 对象】

来到重要点(编写并看结果得到结论)

       		 基础类型【栈】
		  var a = 10;
		  var b = a;  //(复制的情况)会新开辟新栈的空间,并不是指向给a的地址 
		  a = a + 1;  
		  console.log(b); // Value: 10 | 发现与a互不影响
			
		  引用类型 【堆】
		  var model1 = {};
		  var model2 = model1;     // 赋值 Copy了一个指针给 model2,此为相连互应
		 model1.name="baicexxqtd";
		 console.log(model2.name); //value: baicexxqtd
		  
		 var model3 = { name:"bai" };
		 var model4 = model3; 
		 model4.name = "baicexxqtd";   //value: baicexxqtd
		 console.log(model3.name);
		 
		 var model3 = { name:"bai" };
		 var model4 = model3; 
		 model3.name = "baicexxqtd";  
		 console.log(model4.name); //value: baicexxqtd
		 
		 const name1="bai"; //可改变 |
		 
		 var str = new String("bai"); // new 关键词是需要在堆里面开辟空间的属于 引用类型
		 var str2 = String("bai"); //属于 堆
		 var str3 = "bai"; //属于 栈
		 
		 【基础类型 比较】
		 var a = 1;
		 var b = true;
		 console.log(a==b); //true 也可用 Typeof 检测
		 
		 【引用类型 比较】
		 var arry1 = {};
		 var arry2 = {};
		 console.log(arry1 === arry2); //false
		 
		 【值传梯 测试】
		 var arry1 = [0,1,2,3,4];
		 fucntion add(){
			 arry1[0] = 99; 
		 }
		 console.log(arry1[0]); // 99:发现已更改数据
		 
		 var num = 1;
		 function add(){
			 num = 0;
		 }
		 console.log(num); // 0:发现已更改数据, 为什么因为num是全局变量
		 
		 类型检测:
		 typeof 2; //int
		 typeof '123'; //string
		 typeof true; //bool
		 typeof (funtion(){}) //函数
		 
		 typeof {}; //object ---- 检测对象不可用  
		 Object.prototype.toString.call({});  // 可用于此方法检测 "[object Object]"
		 typeof []; //object ---- 检测数组不可用 可通过 
		 Object.prototype.toString.call([]);  // 可用于此方法检测 "[object Array]"
		 Object.prototype.toString.call((b=1)); //比 typeof 方法强大
       
posted @ 2020-05-15 15:13  baicexxqtd  阅读(192)  评论(0编辑  收藏  举报