js基础及json转换
JavaScript 是一种弱类型或者说动态语言。这意味着你不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。
此外,最新的 ECMAScript 标准定义了7中数据类型:
6种 原始类型: Boolean, Null, Undefined, Number, Stirng, Symbol
一种复杂类型(引用类型)对象: Object.
JavaScript 一切皆对象(除了6中原始类型)
在 JS 中,所有除 Object 以外的类型都是不可变的。比如,JS 中字符串是不可变的,任何对字符串的操作一定返回了一个新字符串,原始字符串并没有被改变。
跟java类似分为值传递和引用传递。
<script type="text/javascript">
var people={age:15,name:'aaa'};
var people1=people;
people1.age=20;
console.log(people.age);//20
</script>
上述例子中people和people1指向同一引用地址。
如果传值时不想改变引用对象的值,可以使用深度克隆方法,也可以使用jQuery.extend([deep], target, object1, [objectN])
<script type="text/javascript">
var people={age:15,name:'aaa'};
var people1={};
$.extend(people1,people);
people1.age=20;
console.log(people.age);//15
</script>
js对象比较
<div data-test="{username: 'admin', password: 123456}"></div>
var test1 = {username: 'admin', password: 123456};
var test2 = {username: 'admin', password: 123456};
var test3=$("div").data('info');
console.log(test1 == test2);//引用比较false
console.log(JSON.stringify(test1) == JSON.stringify(test2));//true值比较
console.log(test2);
console.log(test3);
注意这里取得的test3并非是对象。
console.log(test3.username);//undefined
console.log(test3);
test3 = eval('(' +test3 + ')');//将test3转变为obj
console.log(test3);
console.log(JSON.stringify(test1) == JSON.stringify(test3));
console.log(test3.username);
暂时写到这