重复用到一个对象中的元素 是否应该选择存成变量?~
var obj = {
test: 'abc'
};
function method() {
console.log(obj.test);
obj.test += 'd';
obj.test.toUpperCase();
obj.test.substring(3);
}
function method1() {
forEach([1, ...], function (v) {
console.log(obj.test + i);
});
}
如上栗 obj.test 是否应该存成变量为好 这样直接写引擎不是每次都要去 get 一下吗
但是如果声明为变量又要占用一些内存空间 这种以空间换速度的行为可取吗?~
或者大家有没有什么标准 比方说遇到三次重复就存变量 如果只是偶然一次两次 就直接写好了~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
首先你这个问题里面存成变量是不对的,obj.test是字符串,不是引用类型,使用变量操作的后果就是你只改变了变量而没改变obj.test。具体的请搜索‘引用传递和值传递的区别’。不过改进一下是可以的,需要在最后把变量赋给obj.test
其次你的想法是对的,我个人习惯是两次以上访问就设变量保存了,尤其是对引用类型而言,变量只保存内存地址而已,副作用微乎其微
补充:
你的js水平要加强,字符串是创建就无法修改的,对字符串调用方法不会修改自身,要用一个值来接收,你上面转大写和截取的方法都是无效的
1:在项目开发中我会新建一个constanst.js的文件,把可能多次用到的变量放在这个文件暴露出去,哪里用到,哪里引用
2:建议把test拿出来定义,没必要放到对象中
定义成变量更好一些.虽然占用一些内存空间,但当你的项目大一些的时候,每次get都会花很长时间,效率会低很多
第一,建议创建对象使用构造器模式
需要的时候再创建,不然一直有个obj对象在那里占用内存。
第二,如果一个东西经常用,而你又不想重复生成,那么建议使用原型模式,原型:
你第一次读取obj.prototype.test之后,test值就一直存在原型中,而不是像你的代码一样,每次都会覆盖掉obj对象,重新创建,这样从速度上来说,肯定快的多
而属性读取顺序:当代码读取某个对象的某个属性,会执行搜索。先从当前对象开始,如果没有,则搜索指针指向的原型对象,而不会搜索构造函数。
所以你下次再用就不用在创建对象,指向属性,直接从原型对象中获取属性。
望采纳
如果仅仅是效率上的考虑,完全不用纠结是存变量还是不存变量,因为100万次的读取也不会耗费几毫秒。(你可以写和for循环试试get100万次)。
应该考虑的是代码的可读性。