起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1798|回复: 1

[处理中3] 关于公共变量的理解

[复制链接]

18

主题

52

帖子

276

积分

中级会员

Rank: 3Rank: 3

积分
276
QQ
发表于 2016-12-12 11:19:22 | 显示全部楼层 |阅读模式
本帖最后由 我N型 于 2016-12-12 11:22 编辑

对于AMD模式下的的js,例如一直接在页面中定义变量 var name ="";二是在model中定义 this.name ="";三是localStorage.setItem("name");第4中是window.name ="";请问这4种有什么区别,建议什么情况用哪一种好 ?还有对于内存的消耗?
发表于 2016-12-12 14:20:53 | 显示全部楼层
首先你应该理解js 的作用域 和 require 的模块缓存!
首先,wex5的js代码加载过一次后是缓存在内存里面的!方便下次加载更快,所以模块内的变量是不会销毁的!

第一 和 第二 的作用域是在同一个define模块中的,只有在当前模块可以访问!但是第一种定义方式作用域更大一些,相当于整个js模块中的全局变量,在当前js中任何位置都可以引用
(当然如果定义在js方法中,作用域就是只能在当前方法中访问到,外边访问不到的!)

第二种方式只能在当前model对象定义的方法中可以调用,你需要理解下this含义,便是执行方法的当前对象是谁,如果在回调方法中,那么这个变量的访问方式就会变化,不能直接使用this.name ,需要定义个变量,将this赋值,比如var me =this;  使用me.name访问这个变量

第三种是存储在浏览器缓存里面的!好处是浏览器关闭重启后依然生效!重新获取即可!而且是全局变量,但是需要 每次 加载到缓存中,注意变量冲突问题!

第四种是全局变量,给window对象添加全局变量,需要注意变量冲突

第三和第四种,全局都是可以访问的!但是不建议这样用!主要原因是容易变量冲突!


如果是局部使用,建议使用第二种方式
如果是全局的,建议使用KO对象 可参考:http://docs.wex5.com/wex5-ui-question-list-2096


qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-6-24 19:20 , Processed in 0.082245 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表