继承模式
Posted zzxuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了继承模式相关的知识,希望对你有一定的参考价值。
<!-- 方式1: 原型链继承 1. 套路 1. 定义父类型构造函数 2. 给父类型的原型添加方法 3. 定义子类型的构造函数 4. 创建父类型的对象赋值给子类型的原型 5. 将子类型原型的构造属性设置为子类型 6. 给子类型原型添加方法 7. 创建子类型的对象: 可以调用父类型的方法 2. 关键 1. 子类型的原型为父类型的一个实例对象 --> <script type="text/javascript"> function Supper() { //父类型 this.superProp = ‘The super prop‘ } //原型的数据所有的实例对象都可见 Supper.prototype.showSupperProp = function () { console.log(this.superProp) } function Sub() { //子类型 this.subProp = ‘The sub prop‘ } // 子类的原型为父类的实例 Sub.prototype = new Supper() // 修正Sub.prototype.constructor为Sub本身 Sub.prototype.constructor = Sub Sub.prototype.showSubProp = function () { console.log(this.subProp) } // 创建子类型的实例 var sub = new Sub() // 调用父类型的方法 sub.showSubProp() // 调用子类型的方法 sub.showSupperProp() </script>
<!-- 方式2: 借用构造函数继承(假的) 1. 套路: 1. 定义父类型构造函数 2. 定义子类型构造函数 3. 在子类型构造函数中调用父类型构造 2. 关键: 1. 在子类型构造函数中通用super()调用父类型构造函数 --> <script type="text/javascript"> function Person(name, age) { this.name = name this.age = age } function Student(name, age, price) { Person.call(this, name, age) // this.Person(name, age) this.price = price } var s = new Student(‘Tom‘, 20, 12000) console.log(s.name, s.age, s.price) </script>
<!-- 方式3: 原型链+借用构造函数的组合继承 1. 利用原型链实现对父类型对象的方法继承 2. 利用call()借用父类型构建函数初始化相同属性 --> <script type="text/javascript"> function Person(name, age) { this.name = name this.age = age } Person.prototype.setName = function (name) { this.name = name } function Student(name, age, price) { Person.call(this, name, age) //得到父类型的属性 this.price = price } Student.prototype = new Person() //得到父类型的方法 Student.prototype.constructor = Student Student.prototype.setPrice = function (price) { this.price = price } var s = new Student(‘Tom‘, 12, 10000) s.setPrice(11000) s.setName(‘Bob‘) console.log(s) console.log(s.constructor) </script>
以上是关于继承模式的主要内容,如果未能解决你的问题,请参考以下文章
是否有在单个活动中处理多个片段的 Android 设计模式?
csharp C#代码片段 - 使类成为Singleton模式。 (C#4.0+)https://heiswayi.github.io/2016/simple-singleton-pattern-us