1、在JavaScript中,函数本身也是一个包含了方法和属性的对象
2、原型prototype的属性和方法可以随时修改
3、如果在一个对象自身属性中没有找到指定的属性,就会使用(如果存在的话)原型链中查找到的相关属性(对象自身属性的优先级高于原型属性)
4、通过hasOwnProperty()方法判断一个属性是自身属性还是原型prototype属性
5、并不是所有的属性都会在for-in循环中显示,那些被显示的属性被称为是可枚举的,通过各个对象提供的propertyIsEnumerable()方法来判断对象的某个属性是否可枚举!
6、isPrototype()方法告诉我们当前对象是否是另一个对象 的原型!
7、Object.getPrototypeOf()方法获取对象的原型(部分浏览器实现了此功能)
8、在javaScript中,内建对象的构造器函数(如:Array、String、Object和Function)都是可以通过其原型来进行扩展的。这意味着,可以在数组原型中添加新的方法,就可以使其在所有的数组中可用!
9、如果想通过原型为某个对象添加一个新属性,务必先检查一下该属性是否已经存在 这样会增加脚本对于未来环境的适应能力 例子:
if(typeof String.prototype.trim !=== 'function'){
String.prototype.trim=function(){
return this.replace(/^\s+|\s+&/g, ' ');
};
}
10、当重写某对象的prototype时,需要重置相应的constructor属性。例子:
function Dog(){}
Dog.prototype={};
new Dog().constructor===Dog; false
Dog.prototype.consturctor=Dog;
new Dog().constructor===Dog; true