首页 > 专栏 > 前端 > 文章详情
js 中的变量的概念和引用 发布于:2021-03-03 09:23:22   来源:高级程序设计3   查看:4  讨论:0
JavaScript变量可能分为两种不同数据类型的值:asj易塔云建站-模板下载,web开发资源,技术博客
asj易塔云建站-模板下载,web开发资源,技术博客
一、基本类型值。asj易塔云建站-模板下载,web开发资源,技术博客
asj易塔云建站-模板下载,web开发资源,技术博客
基本类型值:简单的数据段。undefined null Boolean number string。asj易塔云建站-模板下载,web开发资源,技术博客
如何访问:以上5种数据类型是按值访问,因为可以操作保存在变量中的实际值。asj易塔云建站-模板下载,web开发资源,技术博客
操作属性:(无法操作属性)
var name = "名字2";asj易塔云建站-模板下载,web开发资源,技术博客
name.age = 30;asj易塔云建站-模板下载,web开发资源,技术博客
console.log(name.age);//undefined 
复制变量值
var num1 = 5;asj易塔云建站-模板下载,web开发资源,技术博客
var num2 = num1;asj易塔云建站-模板下载,web开发资源,技术博客
num1+=1;asj易塔云建站-模板下载,web开发资源,技术博客
num2+=2;asj易塔云建站-模板下载,web开发资源,技术博客
console.log(num1);asj易塔云建站-模板下载,web开发资源,技术博客
console.log(num2);
asj易塔云建站-模板下载,web开发资源,技术博客
asj易塔云建站-模板下载,web开发资源,技术博客
二、引用类性质。asj易塔云建站-模板下载,web开发资源,技术博客
asj易塔云建站-模板下载,web开发资源,技术博客
引用类型值:可能由多个值构成的对象(Object)。是保存在内存中的对象。asj易塔云建站-模板下载,web开发资源,技术博客
如何访问: js不允许直接访问内存中的位置,不能操作对象的内存空间。在复制对象时,实际是在操作对象的引用,而不是实际的对象。所以引用类型值是按引用访问的。在JavaScript中,可以使用“ . ”和“ [ ] ”来访问对象的属性。
var objectW = {asj易塔云建站-模板下载,web开发资源,技术博客
    name:"word文档",asj易塔云建站-模板下载,web开发资源,技术博客
    pic:"/data/images/win7.jpg",asj易塔云建站-模板下载,web开发资源,技术博客
    editFile: function(){asj易塔云建站-模板下载,web开发资源,技术博客
        //单击,选中,删除,回车等动作。。。asj易塔云建站-模板下载,web开发资源,技术博客
        if(true){asj易塔云建站-模板下载,web开发资源,技术博客
            //鼠标右键asj易塔云建站-模板下载,web开发资源,技术博客
            this.fileRightKey();asj易塔云建站-模板下载,web开发资源,技术博客
        }asj易塔云建站-模板下载,web开发资源,技术博客
        if(true){asj易塔云建站-模板下载,web开发资源,技术博客
            //双击全选此行asj易塔云建站-模板下载,web开发资源,技术博客
            this.doubleClick();asj易塔云建站-模板下载,web开发资源,技术博客
        }asj易塔云建站-模板下载,web开发资源,技术博客
    },        asj易塔云建站-模板下载,web开发资源,技术博客
    fileRightKey: function(){asj易塔云建站-模板下载,web开发资源,技术博客
        console.log("监听鼠标,如果在可编辑区域内点击了鼠标右键,那么");asj易塔云建站-模板下载,web开发资源,技术博客
    },asj易塔云建站-模板下载,web开发资源,技术博客
    doubleClick : function(){asj易塔云建站-模板下载,web开发资源,技术博客
        console.log("你双击了鼠标左键,那么。。。");asj易塔云建站-模板下载,web开发资源,技术博客
    }asj易塔云建站-模板下载,web开发资源,技术博客
}asj易塔云建站-模板下载,web开发资源,技术博客
var obj1 = objectW.name;asj易塔云建站-模板下载,web开发资源,技术博客
var obj2 = objectW.editFile();asj易塔云建站-模板下载,web开发资源,技术博客
console.log(obj2);
操作属性:(操作内存)在给对象添加属性时,操作的是实际的对象(也就是内存)。asj易塔云建站-模板下载,web开发资源,技术博客
复制变量值
var obj1 = objectW;asj易塔云建站-模板下载,web开发资源,技术博客
var obj2 = obj1;asj易塔云建站-模板下载,web开发资源,技术博客
obj1.name = "改变";asj易塔云建站-模板下载,web开发资源,技术博客
console.log(obj1.name);//改变asj易塔云建站-模板下载,web开发资源,技术博客
console.log(obj2.name);//改变
复制变量下,不管是obj1还是obj2,都是副本,只是有新旧。它们都指向着原型对象,或者叫父对象。因为是通过引用连接的,所以改变了其中任一个,三者都属性都改了。asj易塔云建站-模板下载,web开发资源,技术博客
exl中的对象是这个意思,其实就是一些方法和属性的组合,最后起个版权名字。asj易塔云建站-模板下载,web开发资源,技术博客
asj易塔云建站-模板下载,web开发资源,技术博客
asj易塔云建站-模板下载,web开发资源,技术博客
asj易塔云建站-模板下载,web开发资源,技术博客
内存中存在一些默认定义好的原型对象,保存在堆内存中(堆内存:就是杂乱无章法的把衣服堆在那;栈内存:就是有规则的整理好,快速使用,受限使用),区别查看这里:https://zhuanlan.zhihu.com/p/118168534asj易塔云建站-模板下载,web开发资源,技术博客
asj易塔云建站-模板下载,web开发资源,技术博客

评论

  • 匿名