你不知道的Javascript之对象
对象有二种形式:声明文字 与构造形式;
 文字:
			 var myobj = {
			 	key:value,
			 	//........  可以多添加内容
			 }
			 构造:
			 var myobj = new Object();
			 myobj.key = value; //内容必须逐个添加;
			 
			 内置对象
			 String Number Boolean Object Function Array  Date RegExp Error
			 对象的访问
			 var myobj = {
			 	a:2,
			 	b:3
			 }
			 myobj.a//2  点语法通常为  属性访问
			 myobj["a"]//2 中括号通常称为   键访问
			 还有例如:在对象中 属性名永远是字符串
			 如果中括号中
			 var myobj = {};
			 myobj[true] = "foo";
			 myobj[3] = "bar";
			 myobj[myobject]="baz";
			 自动转化
			 myobj["true"]= "foo";
			 myobj["3"] = "bar";  //与数组是有区别的 注意!!!!!	
属性与方法:
			 无论对象返回声明类型,每次访问对象的属性就是属性访问,如果属性访问返回的是一个函数,那它并不是一个"方法",属性访问返回
			 的函数和其他函数没有任何区别(除了this的隐式绑定);
			 function  foo()
			 {
			 	console.log("foo");
			 }
			 var somefoo =  foo;
			 var myobj = {
			 	somefoo:foo;
			 }
			 那么:  myobj.somefoo  与 somefoo 没有区别 知识对与同一个函数的不同引用;
			 即使你在对象的文字形式中声明一个函数表达式,这个函数也不会属性这个对象;
			 他们只是对应相同函数的不同引用;
			 var myobj = {
			 	foo:function()
			 	{
			 		console.log("foo");
			 	}
			 }
			 var somefoo = myobj;
			 somefoo;
			 myobj.foo;	
数组
			 深复制
			 var newobj = JSON.parse(JSON.stringify(someobj));
			 浅复制
		     ES6中出现的新方法 Object.assign(第一个参数是目标对象,之后跟一个或多个源对象)
		     遍历所有可以枚举的对象
		     
		     属性描述
		     判断属性是否只读
		     var myobj = {a:2};
		     Object.getOwnPropertyDescriptor(myobj,"a"){
		         value:2,
		         writable:true,   //是否修改属性的值
		         enumerable:true, //可配置的
		         configurable:true //属性描述符  是否属性出现在对象的属性枚举中
		     }
                    
                
                
            
        
浙公网安备 33010602011771号