每个函数或对象都有一个原型属性指向一个原型对象,除特殊除外
构造函数创建的对象中__proto__属性都指向同一个原型对象,共享这个原型对象
相当于java中static,所有对象都共享原型对象
function Box(){} //每个函数或对象都有一个原型对象,除特殊除外 //原型相当于static,所有对象都共享 Box.prototype.name = ‘张三‘; Box.prototype.run = function(){ return this.name; } var box1 = new Box(); var box2 = new Box(); console.info(box1.run()==box2.run());//true
__proto__指向其构造函数Object的prototype;
box1. __proto__
IE中不支持这个属性
isPrototypeOf是用来判断指定对象object1是否存在于另一个对象object2的原型链中,是则返回true,否则返回false。
格式如下:
object1.isPrototypeOf(object2);
console.info(Box.prototype.isPrototypeOf(box1));
object.hasOwnProperty(‘proName‘); //实例中是否有属性,不是原型属性
//property in object 不管实例中有该属性或者原型中有该属性,只要一个有就返回true
//判断只有原型中有属性
function isProperty(object,property){
return !object.hasOwnProperty(property)&&(property in object);
}
//使用字面量的方式创建对象 function Boxp (){} Boxp.prototype = { name:"张三", add : function(){ }, constructor:Boxp//把他的构造强制指回Boxp }
//用原型扩展方法 String.prototype.addme = function(){ return this+"自己扩展"; } console.info(‘aaaaa‘.addme());
原文:http://www.cnblogs.com/jentary/p/6279958.html