当前位置:网站首页 > Vue.js开发 > 正文

js基础-(二)-类和面向对象

一,原型链的基础知识

1,每个函数function都有一个prototype,即显式原型(属性)
2,每个实例对象都有一个–proto–,可称为隐式原型(属性)

原型链:
访问一个对象的属性时,先在自身属性中查找,找到即返回。
如果没有,再沿着–proto–这条链向上查找,找到返回
如果最后没有找到,返回undefined
因为是沿着–proto–这条链查找的,所以原型链实际上是隐式原型链!!

二,早期版本中的类与原型

利用js中的原型链,早期可以实现js中对类的模仿,也就是采用构造函数的形式:

 function Fn(){ 
    //构造函数 this.test1=function(){ 
    console.log("test1()") } } Fn.prototype.test2=function(){ 
    console.log("test2()") } //将方法定义在原型对象上 var fn=new Fn() fn.test1() //直接在fn中找到了 fn.test2() //fn中没找到,就去原型对象中找,找到了就调用 

利用的就是原型链和New的知识。将属性和方法放置在原型链上,实现继承。

三,es6中的类

ES6 中加入了新特性 class,new 跟 function 搭配的怪异行为终于可以退休了,在任何场景,都推荐使用 ES6 的语法来定义类,而令 function 回归原本的函数语义。

类的基本写法:

class Rectangle { 
    constructor(height, width) { 
    this.height = height; this.width = width; } // Getter get area() { 
    return this.calcArea(); } // Method calcArea() { 
    return this.height * this.width; } } 

在现有的类语法中,getter/setter 和 method 是兼容性最好的。

我们通过 get/set 关键字来创建 getter,通过括号和大括号来创建方法,数据型成员最好写在构造器里面。

类的写法实际上也是由原型运行时来承载的,逻辑上 JavaScript 认为每个类是有共同原型的一组对象,类中定义的方法和属性则会被写在原型对象之上。

此外,最重要的是,类提供了继承能力。我们来看一下下面的代码。

class Animal { 
    constructor(name) { 
    this.name = name; } // Getter get age() { 
    return this.name+"年纪18"; } //methods speak() { 
    console.log(this.name + ' makes a noise.'); } } class Dog extends Animal { 
    constructor(name) { 
   //定义实例对象需要传的参数 super(name); //需要用super调用执行父类的构造器函数 } speak() { 
    console.log(this.name + ' barks.'); }//狗实例重写覆盖了父类的speak方法 } let d = new Dog('大黑狗'); d.speak(); // 大黑狗 barks. console.log(d.age)//大黑狗年纪18 

当我们使用类的思想来设计代码时,应该尽量使用 class 来声明类,而不是用旧语法,拿函数来模拟对象。

到此这篇js基础-(二)-类和面向对象的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 巧妙的响应式:深入理解Vue 3的响应式机制2024-12-02 19:27:09
  • 手把手写一个vue3的组件2024-12-02 19:27:09
  • vue+webpack5项目中全局引入scss2024-12-02 19:27:09
  • 安装vue-devtool2024-12-02 19:27:09
  • copyWebpackPlugin的使用及常见问题(glob及Path ............... is not in cwd)2024-12-02 19:27:09
  • vue3代码的组织形式2024-12-02 19:27:09
  • vue3初探-工程化项目架构-笔记2024-12-02 19:27:09
  • vue-cli2.0webpack的理解2024-12-02 19:27:09
  • 对修饰器的实验支持功能在将来的版本中可能更改。在 “tsconfig“ 或 “jsconfig“ 中设置 “experimentalDecorators“ 选项以删除此警告。ts(1219)2024-12-02 19:27:09
  • js事件循环机制-宏任务微任务2024-12-02 19:27:09
  • 全屏图片