首页 > 编程语言 >[Javascript] Lazy Overriding

[Javascript] Lazy Overriding

时间:2024-11-23 22:57:38浏览次数:5  
标签:Lazy Overriding text Javascript clipboard input navigator document copyText

Let's see the following code

function copyText(text) {
  if (navigator.clipboard) {
    navigator.clipboard.writeText(text);
  } else {
    const input = document.createElement('input');
    input.setAttribute('value', text);
    document.body.appendChild(input);
    input.select();
    document.execCommand('copy');
    document.body.removeChild(input);
  }
}

Any problem with this code?

 

So why everytime we call copyTextfunction, we have to do navigator.clipboardfeature detection again?

 

Feature detection won't change anyhow, in theory, we only need to do the feature detection once; 

 

Of course, in this example, it won't cause any performance overload with feature detection, it's just an example, but there will be some cases, doing check everytime is time consuming when function get called .

 

The way to can resolve this issue is by using Function Lazy overriding:

function copyText(text) {
  if (navigator.clipboard) {
    copyText = (text) => {
      navigator.clipboard.writeText(text);
    };
  } else {
    copyText = (text) => {
      const input = document.createElement('input');
      input.setAttribute('value', text);
      document.body.appendChild(input);
      input.select();
      document.execCommand('copy');
      document.body.removeChild(input);
    };
  }
    
  copyText(text);  
}

 

So for the first time exeuction:

 

After the first time:

标签:Lazy,Overriding,text,Javascript,clipboard,input,navigator,document,copyText
From: https://www.cnblogs.com/Answer1215/p/18565209

相关文章

  • 【前端】javaScript
    目录一、简述JS1.1引入方式二、基础语法2.1变量2.2数据类型2.3运算符2.4对象2.4.1数组2.4.2函数2.4.3对象三、JQuery3.1引⼊依赖3.2JQuery语法3.3JQuery选择器3.4JQuery事件3.5操作元素3.6常用方法一、简述JSjavaScript:JS:JavaScript(简称JS)......
  • 第十章JavaScript的应用
    10.1JavaScript概述10.1.1JavaScript简介JavaScript是一种基于对象(0bject)和事件驱动(EventDriven)并具有安全性能的脚本语言,能够与HTML(超文本标记语言)、Java语言一起在Web页面中与Web客户交互它无须经过先将数据传给服务器端(Server)、再传回来的过程,而直接可以由客......
  • 深入理解 JavaScript 中的 Array.find() 方法:原理、性能优势与实用案例详解
    目录深入理解JavaScript中的Array.find()方法:原理、性能优势与实用案例详解一、引言:为什么要使用Array.find()二、Array.find()的使用与技巧1、基础语法2、返回值3、使用技巧三、Array.find()的优势与实际应用案例1、利用返回引用的优势修改数据2、查找嵌套数据......
  • 第十章JavaScript的应用
    10.1JavaScript概述10.1.1JavaScript简介Jovusoripl是一种基于对象(Ohjet)和事件驱(FrentDriven)并具有安全性能的脚木语育,能够与HTML(超文本标记滔言)、Jara港言二起在Web页面中与Web客户交互,它无须经过先将数据传给服务器端(Sever).再传回来的过程,而直接可以由客户......
  • JavaScript 运行机制
    JavaScript是单线程的脚本语言,其运行机制主要基于事件循环(EventLoop)。执行栈(CallStack)执行栈是一个存储函数调用的栈结构。当JavaScript代码开始执行时,首先会有一个全局执行上下文(GlobalExecutionContext)被压入执行栈。当遇到函数调用时,一个新的函数执行上下文会被创......
  • JavaScript语法基础——变量,数据类型,运算符和程序控制语句(小白友好篇,手把手教你学会!)
     一、JavaScript概述JavaScript是一种高级编程语言,常用于网页开发和服务器端应用程序。它是一种动态类型语言,可以在浏览器中直接解释执行,而不需要编译。脚本(Script)是一种与计算机程序相关的指令集或代码块,用于执行特定的任务或操作。脚本通常用于自动化重复性的任务或进行特......
  • python、JavaScript 、JAVA等实例代码演示教你如何免费获取股票数据(实时数据、历史数
    ​近一两年来,股票量化分析逐渐受到广泛关注。而作为这一领域的初学者,首先需要面对的挑战就是如何获取全面且准确的股票数据。因为无论是实时交易数据、历史交易记录、财务数据还是基本面信息,这些数据都是我们进行量化分析时不可或缺的宝贵资源。我们的核心任务是从这些数据......
  • javascript对象介绍
    1.什么是对象?在JavaScript中,对象是一个无序的键值对集合,可以用来存储数据和功能。对象可以包含原始值、函数(方法)以及其他对象,是构建复杂数据结构和实现面向对象编程的基础。2.创建对象2.1字面量方式最常见的创建对象的方法是使用对象字面量:constperson={n......
  • JavaScript 第27章:构建工具与自动化
    在现代JavaScript开发中,构建工具、代码转换工具、代码质量和代码格式化工具对于提高开发效率、保持代码整洁以及确保代码质量有着至关重要的作用。下面将分别介绍Webpack、Babel、ESLint和Prettier的配置与使用,并给出一些示例。1.构建工具:Webpack配置与使用Webpack是一个......
  • JavaScript 第25章:Vue 基础
    在学习JavaScript的第25章关于Vue的基础知识时,我们将从以下几个方面来了解Vue框架,并通过一个实战案例来巩固所学的知识。Vue概述Vue.js是一个用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,易于上手,同时......