原型和原型链类似于Java和C#的继承;
首先在慕课网上学习到的5个关于JavaStript原型的规则。
1.所有引用类型(数组,函数,对象)除了null之外,都有对象的特征,都可以自由扩展属性;
2.所有的引用类型,都有__proto__(隐式原型)属性,属性值是一个普通的对象。
3.所有的函数,都有一个prototype(显式原型)属性,属性值是也是一个普通的对象。
4.所有的引用类型(数组,对象,函数),其__proto__属性指向它的构造函数的"prototype"属性.
5.当试图得到一个引用类型的属性时,如果这个引用类型本身没有这个属性,那么他会去它的__proto__(即它的构造函数的prototype中寻找).
五个规则的例子如下:
//1.所有引用类型(数组,函数,对象)除了null之外,都有对象的特征,都可以自由扩展属性;
var obj = {}; obj.a = 100;
var arr = []; arr.a = 10;
var fn = function () {
}
fn.a = 1;
var fn1 = new fn();//创建一个fn的实例
console.log(obj.a);
console.log(arr.a);
console.log(fn.a);
//2.所有