1:建立对象的方式:new和对象字面量express
var finn=new Object();finn.name="fiona";finn.toString()
"[object Object]"
var finn={};finn.name="fiona";finn.toString()
"[object Object]"json
2:在使用对象字面量语法时,属性名也可使用字符串数组
var person={name:"finn",age:30};person.name
"finn"
var person={"name":"finn","age":30};person.name
"finn"闭包
3:在经过对象字面量定义对象时,实际上不会调用Object构造函数,Firefox2及更早版本会调用函数
4:对象字面量是向函数传递大量可选参数的首选方式。最好作法:对必需值使用命名参数,使用对象字面量封装多个可选参数对象
function person(obj)
{
if(typeof obj.name=="number")
console.log(obj.name);
};
person({name:1,age:2})
VM813:5 1token
5:访问对象属性两种非法:点表示法和方括号表示法,方括号表示法优势能够经过变量访问属性.若是属性名中包含会致使语法错误的字符,或者属性名使用的关键字或保留字,也可使用方括号表示法ip
var person={name:"fiona"};person["name"]
"fiona"
var person={name:"fiona"};person.name
"fiona"字符串
6:对象字面量中,左花括号就表示的是一个表达式的开始,而不是一个语句块的开始。io
为何要 eval这里要添加 “("("+data+")");//”呢?
缘由在于:eval自己的问题。 因为json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,因此必须强制性的将它转换成一种表达式。
加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是做为语 句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始 和结束标记,那么{}将会被认为是执行了一句空语句。因此下面两个执行结果是不一样的:
alert(eval("{}"); // return undefined
alert(eval("({})");// return object[Object]
对于这种写法,在JS中,能够处处看到。
如: (function()) {}(); 作闭包操做时等。
var person="{age:1}";var x=eval('('+person+')');x.age
1
var person="{'age':1}";var x=eval('('+person+')');x.age
1
var person="{'age':'1'}";var x=eval('('+person+')');x.age
"1"
var person="{\"age\":1}";var x=eval('('+person+')');x.age
1
var person="{\"age\":1,friend:{age:2}}";var x=eval('('+person+')');x.age
1
var person="{\"age\":1,friend:{age:2}}";var x=eval('('+person+')');x.friend.age
2
7:函数当即执行
var x=function xx() {console.log(2);}()
VM1192:2 2
undefined
function xx() {console.log(2);}()
VM1220:2 Uncaught SyntaxError: Unexpected token )
(function xx() {console.log(2);}())
VM1227:2 2
undefined
(function xx() {console.log(2);})()
VM1231:2 2
undefined
8:()是一个分组操做符,它的内部只能包含表达式
9:Array:能够保存任何类型的数据;大小能够动态调整;建立方法new和数组字面量;能够省略new;length非只读
var colors=new Array("10",1,new Object());colors[0]
"10"
var colors=Array(2);colors[0]
undefined
var colors=Array("2");colors[0]
"2"
var colors=[];colors[0]
undefined
var colors=[];colors[1]
undefined
var colors=[];colors[2]
undefined
var colors=[];alert(colors[2])
undefined
var colors=[1,2,3];alert(colors[2])
undefined
var colors=[1,2,3];alert(colors[2]);colors.length=2;alert(colors[2]);
undefined
9.1:检测数组
var colors=[1,2,3];alert(colors[2]);colors.length=2;alert(colors[2]);colors instanceof Array
true
var colors=[1,2,3];alert(colors[2]);colors.length=2;alert(colors[2]);colors instanceof Array;Array.isArray(colors);
true
function xx (){console.log(Array.isArray(arguments));};xx()
VM2211:2 false
function xx (){console.log(Array.isArray(arguments));console.log(arguments[0])};xx(1)
VM2212:2 false
VM2212:2 1
9.2: 转换方法:toString(),valueOf(),join
var finn=["a","b",{}];finn.toString();"a,b,[object Object]"{}undefined({})Object {}alert({})undefinedfinn.valueOf()["a", "b", Object]finn[3]=11finn.toString()"a,b,[object Object],1"finn.valueOf()["a", "b", Object, 1]finn.join("|")"a|b|[object Object]|1"