重复用到一个对象中的元素 是否应该选择存成变量?~

发布于 2022-09-05 14:48:07 字数 462 浏览 20 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

忘你却要生生世世 2022-09-12 14:48:07

首先你这个问题里面存成变量是不对的,obj.test是字符串,不是引用类型,使用变量操作的后果就是你只改变了变量而没改变obj.test。具体的请搜索‘引用传递和值传递的区别’。不过改进一下是可以的,需要在最后把变量赋给obj.test

其次你的想法是对的,我个人习惯是两次以上访问就设变量保存了,尤其是对引用类型而言,变量只保存内存地址而已,副作用微乎其微

补充:
你的js水平要加强,字符串是创建就无法修改的,对字符串调用方法不会修改自身,要用一个值来接收,你上面转大写和截取的方法都是无效的

云朵有点甜 2022-09-12 14:48:07

1:在项目开发中我会新建一个constanst.js的文件,把可能多次用到的变量放在这个文件暴露出去,哪里用到,哪里引用
2:建议把test拿出来定义,没必要放到对象中

往日 2022-09-12 14:48:07

定义成变量更好一些.虽然占用一些内存空间,但当你的项目大一些的时候,每次get都会花很长时间,效率会低很多

蓝眸 2022-09-12 14:48:07

第一,建议创建对象使用构造器模式

 function obj(test){
        this.test = 'abc'; 
        }         

需要的时候再创建,不然一直有个obj对象在那里占用内存。
第二,如果一个东西经常用,而你又不想重复生成,那么建议使用原型模式,原型:

obj.prototype={
     constructor:obj;
     test:'abc'
}

你第一次读取obj.prototype.test之后,test值就一直存在原型中,而不是像你的代码一样,每次都会覆盖掉obj对象,重新创建,这样从速度上来说,肯定快的多
而属性读取顺序:当代码读取某个对象的某个属性,会执行搜索。先从当前对象开始,如果没有,则搜索指针指向的原型对象,而不会搜索构造函数。
所以你下次再用就不用在创建对象,指向属性,直接从原型对象中获取属性。
望采纳

平生欢 2022-09-12 14:48:07

如果仅仅是效率上的考虑,完全不用纠结是存变量还是不存变量,因为100万次的读取也不会耗费几毫秒。(你可以写和for循环试试get100万次)。

应该考虑的是代码的可读性。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文