概念:一個對象可以訪問另一個對象上的成員。在javascript,對象與對象之間是通過PRototype屬性來實現成員和方法的共享(繼承)。
function Animal(name){ this.name = name}Animal.prototype.eat=function(){ console.log(this.name + 'can eat other small animals .')}var animal1 = new Animal('snake')var animal2 = new Animal('tiger')animal1.eat===animal2.eat //true//animal1.eat和animal2.eat都指向 Animal.prototype.eat ,實現方法共享(繼承)原型:就是函數的prototype屬性所引用的對象 原型繼承的原理:一個對象能夠訪問它的proto屬性所指向的對象上的成員和方法(當然如果這個對象本身有它要訪問的成員和方法,就不去它的proto屬性所指向的對象上查找,逐級向上查找,直至null,則返回undefined)
var a = {}//繼承關系:a -> Object.prototype ->null// a.hasOwnProperty 就是訪問的Object.prototype上的hasOwnProperty方法。因為a本身并沒有hasOwnProperty方法,而a.__proto__屬性指向 Object.prototype ,且Object.prototype上有hasOwnProperty方法概念:從一個對象到Object.prototype之間存在一條體現繼承層次關系的鏈式結構。 本質:鏈上的每一個對象都是通過proto屬性連接起來的
...jsvar a = {};//原型鏈:a -> Object.prototype -> nullvar arr=[];//原型鏈:arr -> Array.prototype -> Object.prototype -> nullfunction Person(){}var p1 = new Person()//原型鏈:p1 -> Person.prototype -> Object.prototype -> null...新聞熱點
疑難解答