博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS类与类继承
阅读量:5900 次
发布时间:2019-06-19

本文共 2401 字,大约阅读时间需要 8 分钟。

构造类以及继承

构造函数方法

function Person(name) {    this.name = name}Person.prototype.species = 'human'Person.prototype.sayName = {    alert(this.name)}let person = new Person()person.sayName()
  • 该种方式下的继承

(1)封装一个函数

function extend (child, Parent) {    let F = function(){}    F.prototype = Parent.prototype    child.prototype = new F()    child.prototype.constructor = child}function Man (name) {this.name = name}extend(Man, Person)let man1 = new Man('ziv')console.log(man1.species) // human

(2)绑定

function Man () {    Person.call(this, arguments) // call,apply,bind}

(3)复制继承

function Man () {}for (let prop in Person.prototype) {    //     Man.prototype[prop] = Person.prototype[prop]}Man.prototype.constructor = Man

对象创建方法

let Person = {    name: 'michal',    sayName: function() {        alert(this.name)    }}let person = Object.create(Person)person.sayName()

class类的实现

class Point {    constructor(x, y) {        this.x = x        this.y = y    }    toString() {        return `( ${this.x} ,${this.y} )`    }}
  • 该种方式下的继承
class micPoint extends Point(x, y, z) {    constructor() {        super(x, y)        this.z = z        }    toString () {        return this.z + '' + super.toString()    }    }let point = new Point(2, 3)

极简主义法

  • 实现一个类
let Animal = {    createNew: function() {        let animal = {}        animal.name = 'animal'        animal.sleep = function() {console.log('睡觉')}        return animal    }}let animal1 = Animal.createNew()animal1.sleep() // 睡觉
  • 类的私有属性和方法
let Cat = {    createNew: function() {        let cat = {}        // 在createNew()方法中,只要不是定义在cat对象上的方法和属性,都是私有的        let sound = 'miaomiao' // 该sound变量只能通过公有方法makeSound()来读取        cat.makeSound = function (){console.log(sound)}        return cat    }}let cat2 = Cat.createNew()console.log(cat2.sound) // undefined
  • 类的数据共享
let Cat = {    sound: '喵喵'    createNew: function(){        let cat = {}        cat.makeSound = function(){console.log(Cat.sound)}        cat.changeSound = function(x){Cat.sound = x}        return cat    }}let cat1 = Cat.createNew()let cat2 = Cat.createNew()cat1.makeSound() // 喵喵cat2.changeSound('汪汪') // 修改了共享的数据,另一个实例对象也会受到影响cat1.makeSound() // 汪汪
  • 该种方式下的继承实现
let Cat = {    createNew: function() {        let cat = Animal.createNew()        cat.name = 'miao'               cat.makeSound = function () {console.log('喵喵')}        return cat    }}let cat1 = Cat.createNew() // 该实例会继承Cat和Animal类cat1.sleep() // 睡觉

转载地址:http://miesx.baihongyu.com/

你可能感兴趣的文章
oracle中时间处理
查看>>
配置Java EE Eclipse+Tomcat开发环境
查看>>
SSH免密码登录的方法
查看>>
textkit
查看>>
Android详细的对话框AlertDialog.Builder使用方法
查看>>
2594 解药还是毒药
查看>>
Spring中使用@Profile指定不同的环境
查看>>
linux下修改/etc/profile文件
查看>>
cropper实现图片剪切上传
查看>>
谈谈java的BlockingQueue
查看>>
20165313 我期望的师生关系
查看>>
CentOS7+CDH5.14.0安装CDH错误排查: HiveServer2 该角色的进程已退出。该角色的预期状态为已启动...
查看>>
GCC
查看>>
The Oregon Trail 俄勒冈之旅
查看>>
Excel VBA连接MySql 数据库获取数据
查看>>
Nginx页面图片错误 ERR_CONTENT_LENGTH_MISMATCH
查看>>
SQL Server-表表达式基础回顾(二十四)
查看>>
DAO层,Service层,Controller层,View层
查看>>
Developing a Service Provider using Java API(Service Provider Interface)(转)
查看>>
LINQ高级编程 笔记
查看>>