//开始定义一个空对象
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