首页 > 其他分享 >js 如何实现类

js 如何实现类

时间:2023-04-24 17:57:10浏览次数:31  
标签:fly console name 实现 js 如何 log class 属性

一、使用原型

            function Chicken1(name) {
                this.name = name
            }
            Chicken1.prototype.kind = 'chicken';
            Chicken1.prototype.say = function () {
                console.log(`hello,i'm a ${this.kind},my name is ${this.name}`)
            }
            Chicken1.prototype.fly = function () {
                console.log('i can fly')
            }
            const d=new Chicken1('小鸡2');
            d.say() //hello,i'm a chicken,my name is 小鸡2
            d.fly() // 'i can fly

  

二、使用class

         class Chicken{
                #kind='chicken'   //私有属性
                constructor(name){
                    this.name=name;
                }
                say(){
                    console.log(`hello,i'm a ${this.#kind},my name is ${this.name}`)
                }
                fly(){
                    console.log('i can fly')
                }
            }    
        const c=new Chicken('小鸡1');
        c.say() //hello,i'm a chicken,my name is 小鸡1
        c.fly() //i can fly

  

class 几个概念:

静态属性/方法:静态属性指的是 Class 本身的属性,即Class.propName,而不是定义在实例对象(this)上的属性。

class MyClass {
  static myStaticProp = 42;  //静态属性

  constructor() {
    console.log(MyClass.myStaticProp); // 42
  }
}
const a=new MyClass();

a.myStaticProp //undefined   
MyClass.myStaticProp //42

  私有属性/方法:只能在类的内部访问的方法和属性,外部不能访问。ES2022正式为class添加了私有属性,方法是在属性名之前使用#表示。

class IncreasingCounter {
  #count = 0;  //私有属性
  get value() {
    console.log('Getting the current value!');
    return this.#myCount; //不存在myCount 报错
  }
  increment() {
    this.#count++;
  }
}

const counter = new IncreasingCounter();
counter.#count // 实例化对象访问私有属性 报错 说明:浏览器控制台运行不报错,可能是浏览器行为
counter.#myCount //不存在myCount 报错

  共有属性/方法:其他写在类中的就为共有属性/方法

标签:fly,console,name,实现,js,如何,log,class,属性
From: https://www.cnblogs.com/ducky-L/p/17350336.html

相关文章

  • 智能路灯杆网关如何定制 智能网关设计方法
    智慧路灯杆是打造智慧城市的关键环节之一,作为融合物联网技术、边缘智能技术的新型物联网基础设施,智慧杆可以广泛应用在智慧交通、智慧园区、智慧景区、智慧校园等各种场景。在不同的应用场景中,智慧路灯杆的功能也各有侧重,作为智慧路灯杆“大脑”的智能网关也需要针对不同需求进行......
  • 记录-使用双token实现无感刷新,前后端详细代码
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助前言近期写的一个项目使用双token实现无感刷新。最后做了一些总结,本文详细介绍了实现流程,前后端详细代码。前端使用了Vue3+Vite,主要是axios封装,服务端使用了koa2做了一个简单的服务器模拟。一、token登录鉴权jw......
  • 如何通过canvas实现粗细不同的电子签名
    想要实现一个电子签名,可以支持鼠标签名,还能类似书法效果线条有粗有细,同时可以导出成图片.一、实现连贯的划线1)首先需要注册鼠标下压、鼠标放开、鼠标移出和鼠标移动事件,通过鼠标下压赋值downFlag标记开始绘制2) 鼠标移动时,将当前坐标位置传入绘制方法,通过lineTo方法......
  • 如何进行持续集成?
    如何进行持续集成?在进行持续集成实践前,应当正确的选择并配置持续集成服务器。列出了所有的持续集成服务器,其中比较成熟的持续集成服务器包括:CruiseControl,Anthill,Bamboo,TeamCity,Continuum等。CruiseControl作为开源产品,以其对于各种SCM以及构建......
  • 纯人工手解jsjiami.v5|jsjiami.v6过程分析记录
    JSJiami.v6是一种JavaScript代码混淆工具,它可以将JavaScript代码转化为难以理解和阅读的形式,从而增强代码的保密性和安全性。在本文中,我们将介绍JSJiami.v6的工作原理,并提供一些实际的案例代码。JSJiami.v6的工作原理JSJiami.v6采用了多种混淆技术,包括代码结构转化、变量重命名、......
  • 《JSON 必知必会》阅读摘要记录
    [《JSON必知必会》阅读摘要记录|国光](https://www.sqlsec.com/2020/04/jsonbook.html#10-2-%E7%BB%93%E8%AF%AD)JSON必知必会书籍学习记录笔记,想深入一下JSONHijacking漏洞,所以就打算找一本JSON的书籍来读一遍,打捞自己的基础,于是就选了这本书来学习,以后这种读书笔记的......
  • JS逆向中 cookie加密的HOOK方法
    Object.defineProperty(obj,prop,descriptor)其中,参数obj是要定义属性的对象,    prop是要定义或修改的属性名,    descriptor是属性描述符对象。     属性描述符对象的属性包括value、writable、enumerable、configurable和get和se......
  • 数据库查询权限信息代码实现
    ​我们只需要根据用户id去查询到其所对应的权限信息即可​所以我们可以先定义个mapper,其中提供一个方法可以根据userid查询权限信息创建对应的mapper文件,定义对应的sql语句 在application.yml中配置mapperXML文件的位置 ​然后我们可以在UserDetailsServiceImpl中去调......
  • 实现语音接口的调用
    科技讯飞开放平台需要要获取id等3个参数,请到迅飞开放平台:https://www.xfyun.cn/services/voicedictation进行语音接口的调用,我在网上找到了别人的讯飞id接口,自己的还是没有实现成功。放一部分的代码实现一下吧。<%--CreatedbyIntelliJIDEA.User:DELLDate:2023/4......
  • FCKEditor 实现ctrl+v粘贴图片并上传、word粘贴带图片
    ​图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,找到UM.plugins['autoupload'],然后找到autoUploadHandler方法,注释掉其中的代码。加入下面的代码://判断剪贴......