1、for...in... :列出对象中所有的属性,包括原型中的属性;
2、hasOwnProperty() :查询是否是对象自己的属性,不包括原型;
3、propertyIsEnumerable() :对所有的非内建对象属性返回true; //如果可以用for...in...枚举出来则返回true;
4、isPrototypeOf() :返回当前对象是否是另一个对象的原型。
获得原型:
ES5中 Object.getPrototypeOf() 不支持getPrototypeOf的可以用特殊属性__proto__ 。 __proto__存在IE兼容问题。
如果您想通过原型为某个对象添加一个新方法新属性,务必先检查一下该方法是否已经存在。
例:
if( typeof String.prototype.trim !=== 'function' ){
String.prototype.trim = function(){
//代码块
}
}
当我们重写某个对象的prototype时,需要重置相应的constructor属性。