//基本类型和引用类型的值 //ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值. //基本类型值是指简单的数据段,而引用类型值指那些可能由多个值构成的对象. //1.基本类型变量的传递 var name = "陈国栋" name.age = 25; console.log(name.age); //undefind 此处不会报错,返回值为undefind //2.引用类型变量的传递 var person = new Object(); person.name = "陈国栋"; console.log(person.name); //陈国栋 引用类型我们可以为其添加属性和方法,基本类型则不行 //3.基本类型变量的传递 var num1 = 5; var num2 = num1; console.log(num1); // 5 console.log(num2); // 5 num1 = 10; console.log(num1); // 10 console.log(num2); // 5 num2 = 15; console.log(num1); // 10 console.log(num2); // 15 以上可以看出,基本类型变量在专递过后是相互独立的,不管其中一个变量如何修改,另外一个变量都不会发生改变. //4.引用类型变量的传递 /*当从一个变量向另外一个变量赋值应用类型的值时,也会将储存在变量对象中的值赋值一份放到位新变量分配的空间中.不同的是,这个值的副本实际上是一个指针,而这个指针指向存储在堆中的一个对象.复制操作结束后,两个变量实际上将引用同一个对象.因此,改变其中一个变量,就会影响另外一个变量*/ var person2 = person; console.log(person.name); //陈国栋 person2.name = "张飞"; console.log(person.name); //张飞 console.log(person2.name); //张飞
根据上面理论在实际运用中的思考
function getPageInfo(){ var page={}; page.pageWidth = window.innerWidth; page.pageHeight = window.innerHeight; if(typeof page.pageWidth != "number"){ if(document.compatMode == "CSS1Compat"){ //验证当前页面是否在标准模式下 page.pageWidth = document.documentElement.clientWidth; page.pageHeight = document.documentElement.clientHeight; }else{ page.pageWidth = document.body.clientWidth; page.pageWidth = document.body.clientHeight; } } return page; } mypage = getPageInfo(); console.log(mypage.pageWidth+","+mypage.pageHeight);//1289.1189 window.innerWidth = 100; console.log(mypage.pageWidth) //1289 console.log(window.innerWidth) //100
上面为获取窗口可视尺寸的函数.
其中将window.innerHeight的值赋值给page.pageHeight,即相当于我们例子中num2赋值给num1一样,是基本类型变量的传递.
所以我们在修改window.innerWidth的值时,mypage.pageWidth的值不会发生改变.