//开始定义一个空对象 var dog = {}; //向dog对象添加一个属性 dog.name = "Benji"; //现在,向dog对象添加一个方法 dog.getName = function () { return dog.name; } console.log(dog.getName); console.log(dog.getName()); dog.getName = function () { //重新定义该返回方法 //返回一个硬编码的值 return "Lilu"; } console.log(dog); console.log(dog.getName); console.log(dog.getName()); delete dog.name; //删除属性 console.log(dog); //添加更多的方法和属性 dog.say = function () { return "Woof!"; }; dog.fleas=true; console.log(dog);
//即使最简单的{}对象也具有从Object.prototype继承的属性和方法 if(typeof Object.prototype.clone==="undefined"){ Object.prototype.clone=function(){ alert(‘克隆‘); }; } var dog={}; console.log(dog); dog.clone()
可以使用自己的构造函数,或使用一些类似Object(),Date(),String()的内置构造函数创建对象
//第一种方法 使用字面量 var car={goes:"far"}; console.log(car); //另一种方法 使用内置构造函数 var car2=new Object(); car2.goes="far"; console.log(car2); //另一种方法 使用内置构造函数 var car3=new String(); car3.goes="far"; console.log(car3); var car4=new Date(); car4.goes="far"; console.log(car4);
不要使用new Object构造函数,应该使用简单可靠的对象字面量模式。
//警告:前面的反模式 //一个空对象 var o=new Object(); console.log(o.constructor); console.log(o.constructor===Object); //true; //一个数值对象 var o=new Object(1); console.log(o.constructor===Number); //true; console.log(o.toFixed(2)); // 1.00 //一个字符串对象 var o=new Object("I am string"); console.log(o.constructor===String); //true; //一般的对象并没有substring()方法, //但是字符串对象都有该方法 console.log(typeof o.substring); //function //一个布尔对象 var o=new Object(true); console.log(o.constructor===Boolean);//true;
//Person构造函数的定义 var Person = function (name) { this.name = name; this.say = function (){ return "I am " + this.name; }; }; var lilu=new Person("Lilu"); lilu.say(); //输出为I am Lilu console.log(lilu); console.log(lilu.say());
代码改进
//Person构造函数的定义 var Person = function (name) { this.name = name; }; Person.prototype.say=function(){ return "I am "+this.name; } var lilu=new Person("Lilu"); lilu.say(); //输出为I am Lilu console.log(lilu); console.log(lilu.say());
原文:http://my.oschina.net/lilugirl2005/blog/525551