js中为什么不能为值类型的变量动态添加属性呢?

js中为什么不能为值类型的变量动态添加属性呢?,第1张

//控制台输出:xiaobai</script然后在看:<scriptvarname = "xiaobai"name.sex="male"console.log(name.sex)//控制台输出:undefined</script为什么会出现这种情况呢?关键还是在于语言设计上面,js语言设计方面,对于基本的数据类型如:Undefined、Null、Boolean、Number、String,为了优化查询这些数据的速度把其定义在一个具有固定空间中,即栈中;而对于复杂的数据类型比如说对象(Object),由于这些数据相对来说比较复杂,把其放到栈中并不合适,于是乎它就将这类的数据保存到堆里面,在栈中知识保留指向堆中地址的指针,这样子设计既简化了查询又从一定程度上面减少了内存的消耗,这就是js(或者说ecmascript)语言设计的精妙之处。我们学技术、学编程、学计算机,无论你是做服务端、客户端、web前端···其实,归根到底就是更好的利用计算机,跟好的利用其资源来为我们服务,返观我们很多的计算机方面很设计方面,比如 *** 作系统,为什么要分用户态、内核态;比如硬件,为什么要分寄存器、高速缓存、内存、磁盘、磁带;比如多线程web服务器,为什么要做成多线程、构造高速缓存把常用的页面放到高速缓存里面····等等,其实都是为了这一点:更好的利用计算机的资源,来为我们服务。

不可以。

可以这样分析:

style.width不是一个属性,更不是obj对象的一个属性,你若这样访问obj["style.width"],这是不存在的;

style.width把它当作一个引用(指针)来看的话,不指向任何内容。你把他赋值给一个变量(比如var w = style.width)这是行不通的。

我想你需要的可能是这样:

obj['style']['width']

你从这个角度考虑试试。

变量声明

变量在脚本中的第一次出现是在声明中。变量在第一次用到时就设置于内存中,便于后来在脚本中引用。使用变量之前先进行声明。可以使用 var 关键字来进行变量声明。var count // 单个声明。

var count, amount, level // 用单个 var 关键字声明的多个声明。

var count = 0, amount = 100 // 一条语句中的变量声明和初始化。如果在 var 语句中没有初始化变量,变量自动取 JavaScript值 undefined。尽管并不安全,但声明语句中忽略 var 关键字是合法的 JavaScript语法。这时,JavaScript解释器给予变量全局范围的可见度。当在过程级中声明一个变量时,它不能用于全局范围;这种情况下,变量声明必须用 var 关键字。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11402055.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存