首页 > 其他分享 >封装保护函数

封装保护函数

时间:2024-06-03 12:33:14浏览次数:7  
标签:function set 封装 函数 保护 add toString func native

承接上篇 本篇将分装保护函数

直接上代码

!(function (){
 //1.第一步   先备份一份tostring方法
  const $toString=Function.prototype.toString
  const symbol=Symbol()

  //.3.改写函数
  const mytoString=function (){
    //首先先判断 调用这个tostring 方法是不是一个 函数 如果是一个函数 那么就返回 这个函数的 symbol属性 如果没有symbol 属性 ,那么就调用原生 保存的$toString方法
    return typeof this ==="function" && this[symbol] || $toString.call(this)
  }
  set_native=function (func,key,val){
    Object.defineProperty(func,key,{
      enumerable:false,
      configurable:true,
      writable:true,
      value:val

    })
  }



  //2.第二部然后再将该方法删除 //把他删除以后就要进行对他改写 对方法的改写
  delete Function.prototype.toString;

  //4. 我们已经改写了tostring方法 但是我们没有在原型链上添加该属性
  set_native(Function.prototype,"toString",mytoString)
  set_native(Function.prototype.toString,"toString","function toString() { [native code] }")
  globalThis.set_Native=function (func,funcname){//方法的总入口
    set_native(func,symbol,`function ${funcname || func.name || ""}() { [native code] }`)

  }

})()
add=function (a,b){
return a+b
}
set_Native(add,"add")
console.log(add.toString())
console.log(Function.prototype.toString.call(add))

//运行结果function add() { [native code] }
//function add() { [native code] }

对本节内容有疑点的同学请在评论区 提出问题

标签:function,set,封装,函数,保护,add,toString,func,native
From: https://blog.csdn.net/2301_79987087/article/details/139410999

相关文章

  • 计算机网络-OSI七层参考模型与数据封装
    目录一、网络1、网络的定义2、网络的分类3、网络的作用4、网络的数据传输方式5、网络的数据通讯方式二、OSI七层参考模型1、网络参考模型定义2、分层的意义3、分层与功能4、TCP\IP五层模型  三、参考模型的协议1、物理层2、数据链路层3、网络层4、传输层5、......
  • 新时代的程序员4大本领:lambda表达式,链式编程,函数式接口,Stream流式计算
    传统程序员4大本领:泛型,枚举,反射,注解新时代的程序员4大本领:lambda表达式,链式编程,函数式接口,Stream流式计算lambda表达式//1.不需要参数,返回值为5()->5//2.接收一个参数(数字类型),返回其2倍的值x->2*x//3.接受2个参数(数字),并返回他们的差值(x,y)->x......
  • IC芯片晶片固定保护环氧胶有什么优点?
    IC芯片晶片固定保护环氧胶有什么优点? IC芯片晶片固定环氧胶在电子设备制造和组装中被广泛使用,主要用于电子封装和芯片固定应用,具有多种显著优点,其主要优点包括但不限于以下几点:高强度粘接:环氧胶的固化后具有较高的强度,能够牢固地粘合芯片和基板,提供可靠的芯片固定,保证芯......
  • python函数
    一、什么是函数定义:函数是组织好,可重复使用,用来实现单一,或关联功能的代码段二、pycharm中的表结构项目,包(init)或目录,py文件,py文件包含多个函数或类等三、函数的有哪些优点?1、降低代码冗余2、增加代码的复用性,提高开发效率3、提高程序的拓展性4、封装:就是把代码片段放在函......
  • 数据保护技巧揭秘:为导出文件添加防护密码的实用指南
    一、前言当涉及到敏感数据的导出和共享时,数据安全是至关重要的。在现代数字化时代,保护个人和机密信息免受未经授权的访问和窃取是每个组织和个人的首要任务之一。在这种背景下,葡萄城的纯前端表格控件SpreadJS提供的加密功能为用户提供了一种强大的工具,可以轻松地将导出的Excel......
  • strcpy、strncpy、strcat、strncat、strcmp、strstr字符串函数的使用和模拟
    strcpy的使用和模拟(作用)将一个字符串的内容复制到另外一个字符串中代替掉。strcpy的使用效果#include<stdio.h>#include<string.h>intmain(){charstr1[]="Samplestring";charstr2[40];charstr3[40];strcpy(str2,str1);strcpy(str3,"copysucce......
  • 线程创建的函数及应用小结
    进程是计算机分配资源的基本单位,线程是cpu调度的基本单位线程基本概念:LWP:lightweightprocess轻量级的进程。创建线程的底层函数和进程一样,都是clone,因此线程的本质仍是进程(在linux环境下)与进程相比,线程有独立的TCB结构体(类似于进程的PCB),但没有独立的地址空间(共享),类似于合租......
  • 20、matlab信号波形生成:狄利克雷函数、高斯脉冲和高斯脉冲序列
    1、狄利克雷函数生成波形diric()函数语法:y=diric(x,n)返回n次的狄利克雷函数对输入数组x的元素求值。1)diric()函数代码x=linspace(-2*pi,2*pi,301);%定义x取值d6=diric(x,6);d7=diric(x,7);subplot(2,1,1)plot(x,d6)ylabel('n=6')title('狄利克雷函数')su......
  • C/C++mai函数的参数
    在C和C++编程中,main函数通常是程序的入口点,定义程序的启动方式。函数签名intmain(intargc,constchar**argv,constchar**envp)包括三个参数:argc、argv和envp。这些参数分别用于接收命令行参数和环境变量。1.intargcargc代表“argumentcount”,表示传递给程序的命令行参......
  • Day21.函数的类型提示
    1.函数的类型提示_函数常规传参2.函数的类型提示_函数参数设置默认值3.函数的类型提示__annotations__方法查看参数传参类型 ......