js的原型链

avatar
作者
筋斗云
阅读量:1

原型链:

        1.如何构成原型链?

        2.原型链上属性的增删改查。

        3.绝大多数对象的最终都会继承自Object.prototype    (var obj = Object.create(null或者undefined)没有原型)。

        4.Object.create(原型)。

构成原型链和操作原型链属性:
//最顶的原型是Object.prototype Grand.prototype.__proto__ = Object.prototype; Grand.prototype.lastName = "Deng"; function Grand(){    };  var grand = new Grand();  Father.prototype = grand; function Father(){     this.name = "xuming";     this.fortune = {         card1 : "visa",     };     this.num = 100; };  var father = new Father();  Son.prototype = father; function Son(){     this.hobbit = "smoke"; };  var son = new Son();  //操作原型链上的属性,son会在自身生成一个属性 son.num++; // ---> son.num = son.num + 1; console.log(father.num); //100 console.log(son.num); //101  //操作原型链上的对象中的属性,son不会生成属性 son.fortune.card2 = 'master' console.log(son.fortune); //{card1 : 'visa',card2 : 'master'} console.log(father.fortune); //{card1 : 'visa',card2 : 'master'} 
原型中this的指向:
//a.sayName() sayName里面的this指向是,谁调用的这个方法,this就是指向谁 Person.prototype = {     name : "a",     sayName : function(){         console.log(this.name);     }     }  function Person(){     this.name = "b"; }          var person = new Person(); person.sayName(); //b person.__proto__.sayName(); //a
Object.create(原型):

对象形式:

var obj = {name : "sunny"}; var obj1 = Object.create(obj);  console.log(obj1.name); //sunny

函数形式:

Person.prototype.name = "sunny"; function Person(){  } var person = Object.create(Person.prototype); var person1 = new Person();  console.log(person.__proto__.name); //sunny console.log(person1.__proto__.name); //sunny

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!