对象基础:
引用数据类型: var person={ name:"hjd", } //添加age属性: Object.defineProperty(person,"age",{ value:"30"; //可删除性: configurable:true(可删)/false(不可删); //可枚举性: enumerable:true//false; //可修改性: writable:true//false; })对象创建方式: //对象的添加:1 var person={ name:"zhangsan", age:23, say:function(){ console.log(1,2,3) } }; console.log(person.name); console.log(person.age); person.say(); // 对象的添加:2 var person1={ }; person1.name ="lisi"; person1.age=34; console.log(person1.name); console.log(person1.age); // 对象的添加:函数方法3 function getPerson(name,age){ return{ name:name, age:age, sayName:function(){ console.log(1,2,3) } } } var person2=getPerson("wangwu",33); console.log(person2.name); console.log(person2.age); // 对象的添加:函数方法4 // 返回object function getPerson1(name,age){ var obj=new Object(); obj.name=name; obj.age=age; obj.sayName=function(){ console.log(2,3,2) }; return obj; } var p1=getPerson1("liqi",25); console.log(getPerson1("liliu",20)); console.log(p1.name); console.log(p1.age); // 构造函数: function Person3(name,age){ this.name=name; this.age=age; this.sayName=function(){ console.log(1,1,1) } } var person5=new Person3("WANG",57); console.log(person5.name); console.log(person5.age); person5.sayName(); // 遍历对象的属性: for(var x in person1){ console.log(x) } // 遍历对象的属性值: for(var x in person1){ console.log(person1[x]) } var arr=[1,2,3,4]; arr1=["zhang","wang","li"]; // forEach遍历数组的值,后面要跟方法: arr.forEach(function(e){ console.log(e+1); })//输出zhang1,wang1,li1原型和原型链: 函数本身是一个对象: 1.作为函数,拥有prototype属性,prototype的custractor属性又指向函数本身.此函数产生的对象拥有-proto-属性,这个属性值和产 生他的函数的prototype属性是相等的. 2.函数作为对象本身,也具有-proto-属性,此属性指向上一级产生它的函数的prototype值,当上一级到达object时,object的-proto- 为null 例子: function Person(){ } Person.prototype.name="zhangsan"; Person.prototype.arr=[1,2,3,4]; var p1=new Person(); p1.name="lisi"; var p2=new Person(); console.log(p1.name); console.log(p2.name); //等号就是重新赋值:而不是设置属性 p2.arr=[1,2,3,4,5]; p2.arr.push(7); console.log(p1.arr); console.log(p2.arr); // console.log(p1.arr); // console.log(p2.arr); // 共用一个原型 // p1.arr.push(7); // console.log(p1.arr); // console.log(p2.arr);