來個例子認識一下:函數
1 function Person() { 2 3 } 4 Person.prototype.name = '原型對象上定義的屬性'; 5 Person.prototype.sayName = function () { 6 console.log('原型對象上的方法'); 7 } 8 9 var person1 = new Person(); 10 person1.sayName(); // '原型對象上的方法'
這裏的 Person 就是一個構造函數,和普通的函數是同樣的,只是構造函數要經過new 操做符來使用。this
Person.prototype 就是原型對象spa
而person1 就是Person的一個實例。prototype
1 Person.prototype.constructor == Person // true
1 console.log(Person.prototype.isPrototypeOf(person1)); // true
3、原型鏈的造成指針
1 function typeOne() { // 這就是對象1 2 this.val = true; 3 } 4 typeOne.prototype.getTypeOneVal = function(){ 5 return this.val; 6 } 7 8 function typeTwo(){ 9 this.valTwo = false; 10 } 11 typeTwo.prototype = new typeOne(); // 讓對象2的原型指向對象1的實例,這時候對象2的原型上就有了對象1擁有的屬性和方法 13 console.log(typeTwo.prototype.getTypeOneVal()) // true 14 15 //這時候再實例化 typeTwo 16 17 var instance = new typeTwo(); 18 console.log(instance.getTypeOneVal()) // 會在原型鏈上查找
這就是一個簡單的原型鏈實現了,當出現第三個對象、第四個對象這樣鏈式的寫下去,原型鏈將會更長。code