function Box() {}
var box = new Box();
alert(Box.prototype);//使用构造函数名访问,并且是不能读取信息,是【object,object】
alert(box.prototype);//undefined,因为实例不能访问prototype,如果想访问就要用对象实例提供的指针
//__proto__
//字面量
function Box() {} //{}创建了一个新的对象
//使用字面量的方式创建原型对象,这里{}就是对象,是Object,new Object()就相当于{};
Box.prototype = {
constructor: Box, //强制指向Box
name: ‘LEE‘,
age: 100,
run: function() {
return this.name + this.age;
}
};
var box = new Box();
alert(box.name);//LEE;
alert(box.constructor);//返回的是一个object,function Object() { [native code] },因为上面提到的这里{}就是对象,是Object,new Object()就相当于{};
重写的注意点
function Box() {} //{}创建了一个新的对象
//使用字面量的方式创建原型对象,这里{}就是对象,是Object,new Object()就相当于{};
Box.prototype = {
constructor: Box, //强制指向Box
name: ‘LEE‘,
age: 100,
run: function() {
return this.name + this.age;
}
};
//重写了原型对象
Box.prototype = {
age: 200
};
var box = new Box();
alert(box.name); //undefined,这里不会保留之前原型的任何信息,把原来的原型对象个构造原型的实例切断
alert(box.run()); //报错,因为这里没有了run(),已经切断,上面的那个run()没有了
原文:http://www.cnblogs.com/shenq/p/5453544.html