常 州 外 围 - 常 州 哪 有 外 围

  常 州 外 围 - 常 州 哪 有 外 围 -薇芯【81343628】【81343628】【高端外围资源】【诚信合作,非诚勿扰!】可直接添加 !打算针对js的继承写一系列文章,详细的分析js里继承原理,实现方式,各种继承方式的优缺点,以及最优继承方案,还有多继承的问题等….
  面向对象的编程的核心是封装、继承和多态,js可以看作是一种面向对象的语言,而面向对象的扩展性最核心的部分是多态,多态的必要条件有三个,首先就是继承,其次父类的引用指向子类,最后是方法重写。对于js来说,由于其创建对象的方式多种多样,因此,需要对父类的多种属性和方法实现很好的继承,就必须找到一个比较完善的方法。本篇文章首选介绍三种最基本的继承方式,并分析这几种继承方式的缺陷。
  常 州 外 围 - 常 州 哪 有 外 围 -薇芯【81343628】【81343628】【高端外围资源】【诚信合作,非诚勿扰!】可直接添加 !介绍js继承前,大家先需要js里类的各种属性以及js创建对象的几种模式有所了解。
  js类的属性可以参考: javascript中类的属性研究 这篇文章。
  js创建对象的方式可以参考:javascript创建对象的三种模式 这篇文章。
  第一种方式:对象冒充
  对象冒充,是指将父类的属性和方法一起传给子类作为特权属性和特权方法。
  function Person(name,age){
  this.name = name;
  this.age = age;
  this.sayHi = function(){
  alert(‘hi‘);
  }
  }
  Person.prototype.walk = function(){
  alert(‘walk.......‘);
  }
  function Student(name,age,grade){
  this.newMethod = Person;
  this.newMethod(name,age);
  delete this.newMethod;
  this.grade = grade;
  }
  var s1 = new Student(‘xiaoming‘,10,3);
  console.log(s1.name,s1.age,s1.grade);//xiaoming 10 3
  //s1.walk();//s1.walk is not a function
  可见Student类只继承了Person类的特权属性和方法,并没有继承Person类的共有属性和方法。
  第二种方式:call或apply
  使用call或apply改变对象的作用域来实现继承,让父类的this等于新创建的子类的对象(因为call和apply继承实现机制是一样的,就是传参方式不同,call传多个参数用逗号隔开,apply用数组),本文主要介绍call来实现继承。
  function Person(name,age){
  this.name = name;
  this.age = age;
  this.sayHi = function(){
  alert(‘hi‘);
  }
  }
  Person.prototype.walk = function(){
  alert(‘walk.......‘);
  }
  function Student(name,age,grade){
  Person.call(this,name,age);
  this.grade = grade;
  }
  var s1 = new Student(‘xiaoming‘,10,3);
  console.log(s1.name,s1.age,s1.grade);//xiaoming 10 3
  //s1.walk();//s1.walk is not a function
  同第一种问题一样,没有继承共有属性和方法。call改变了Person中this的作用域,使其指向了Student。对于call方法举例如下:
  function Person(){
  this.name =‘xiaoming‘;
  }
  Person.call(this);
  alert(window.name);
  此例将Person中this的作用域扩大到window上,使得Person中的name属性变为一个全局变量。
  第三种方式:prototype
  常 州 外 围 - 常 州 哪 有 外 围 -薇芯【81343628】【81343628】【高端外围资源】【诚信合作,非诚勿扰!】可直接添加 !使用prototype属性实现继承,让父类的prototype赋给子类的prototype,也可以将父类的实例赋给子类的prototype,这里先介绍将父类的原型赋给子类的原型这种方式,并探讨这种方式的缺陷。在以后会着重介绍prototyp这种继承方式。

猜你喜欢

转载自www.cnblogs.com/zhaojun-20002003/p/12784124.html
今日推荐