js引用类型的存储(js怎么给各中类型字段赋值的)
一、js字符串多存储多少字节
JS字符串的长度受到下标限制。理论大长度是2^53-1(即js中可表达的大安全整数)。2^53是多大呢?大约9PB。根据统计,中国2014年所有出版物(不计复本)不到2000亿字,也就是400GB而已。按此推算,不要说存一个txt了,中国自有甲骨文以来所有的书、各类出版物字数加在一起估计也不可能超过100TB,也就是0.1PB。当然啦,实际引擎是不可能允许分配那么大的字符串的,你的电脑也没那么大存储不是。V8的heap上限只有2GB不到,允许分配的单个字符串大小上限更只有大约是512MB不到。JS字符串是UTF16编码保存,所以也就是2.68亿个字符。FF大约也是这个数字。根据长的网络小说是哪部,目前长的网络小说大概2000万字。所以还是绰绰有余的。《道藏》大约7000万字,《大藏经》大约1亿字,也是存得下的。不过《永乐大典》有3.7亿字,《四库全书》有8亿字,V8/FF的一个字符串就存不下喽。然而IE11貌似可以存4GB的字符串,即21亿字。其实限制是在服务器资源、网速和存储。你文本还没读完,值还没赋完,内存不够了。内存够了,几百m几个G的变量,搞得页面请求超时了,访客没耐心关掉了,或者浏览器内存崩溃了。取一次吗?还是经常要用,要持久化不,数据库肯定存不下,文件存吧〔占硬盘,存不了几个〕,又每次要io读。你干嘛不搞几百字的简介,配个图,附上文件的**地址〔放网盘,2T内免费〕不是很好吗。
二、js的对象和引用类型之间到底是什么关系
用其它有class的语言来说明比较清楚.架设有一个类ClassA,创建一个对象var a= new ClassA(),对象a就是ClassA的一个实例,如果又有var b= new ClassA(),那么b就是ClassA的另一个实例
然后在js里所有new创建的东西都是引用类型的,例如var a= new ClassA(), b= a;这样a和b实际指向的都是同一个对象,这里引用类型的值指的就是这一个对象
三、js怎么给各中类型字段赋值的
ButtonClick: function(EntityName){
var testEntity={};
//主属性,名称字段,只能是单行文本
testEntity.new_name="通过代码新增的记录";
//为单行文本字段赋值
testEntity.new_SingleLine="This account was created by the JavaScriptRESTDataOperations sample.";
//为两个选项字段赋值,只能赋值为true或者false
testEntity.new_TwoOptionSet= true;
//为选项集字段赋值,为整数,是选项集的存储值,不是显示值
testEntity.new_OptionSet={ Value: 100000001};
//为货币字段赋值
testEntity.new_Currency={ Value:"20000.1"};
//为浮点数字段赋值,小数即可
testEntity.new_Float= 10.2;
//为十进制字段赋值,特别注意要用引号引用起来
testEntity.new_Decimal="104.1";
//为整数字段赋值
testEntity.new_Integer= 200;
//为日期和时间字段赋值
testEntity.new_Datetime= new Date();
//为多行文本字段赋值
testEntity.new_MultiLine="多行文本字段的值多行文本字段的值多行文本字段的值多行文本字段的值----多行文本字段的值";
//为查找字段赋值
testEntity.new_Lookup={ Id:"F3A0BB75-F3AD-E311-80B4-00155D016705", LogicalName:"account", Name:"随便什么值"};
SDK.REST.createRecord(
testEntity,
"new_Test2013",
function(TestEntity){
Xrm.Utility.alertDialog("新增记录成功,记录id是"+ TestEntity.new_Test2013Id+"按确定按钮后将打开新增的记录",
function(){
Xrm.Utility.openEntityForm(EntityName, TestEntity.new_Test2013Id);
});
},
function errorHandler(error){
alert('Error message:'+ error.message);
}
);
}
四、js中的null应该是基本数据类型还是引用类型
JS基本数据类型的变量存放的是基本类型数据的实际值;而引用数据类型的变量保存对它的引用,即指针。
JS基本数据类型:null undefined number boolean
string比较特殊
引用数据类型:function object array
var a= 11;
var b= 1;
b= 12;
console.log(a);//11 a的值不会随b值得改变而改变
var a= [1,2,3];
var b= a;
a[0]= 2;
console.log(b[0])//2, b的值随着a的值改变而改,因为他们指向同一个内存地址
var a= [1,2,3];
var b= a;
b= [11, 12, 13];//b指向了另一个内存地址,与a断开关联
a[0]= 2;
console.log(b[0])//11,b的值不随a的值改变而改变
比如说 var a= 1; 1是基本数据类型,因此变量a存放的就是1这个值
var b= [1,2,3],[1,2,3]是引用数据类型,[1,2,3]是放在内存中的,而变量b存放的是[1,2,3]的地址,而不是[1,2,3]这个值
当使用b这个变量时,js解释器会通过b存放的内存地址,找到内存中的相应地址,将其中的值取出来返回