手写new、apply、call、bind

news/2024/7/19 13:04:09 标签: js
// 手写实现new方法

// function _new(ctor, ...args) {
//     let obj = new Object();
//     //
//     obj.__ptoto__ = Object.create(ctor.prototype);
//     // 执行构造函数
//     ctor.apply(obj, [...args]);
//     return obj
// }
// //手写实现apply方法
// Function.prototype.call = function(context) {
//         context = window || context
//         context.fn = this
//         var result = eval('context.fn(...args)');
//         delete context.fn
//         return result
//     }
//     // 手写实现call方法
// Function.prototype.call = function(context) {
//         context = context || window
//         context.fn = this
//         let result = eval('context.fn(...args)')
//         delete context.fn
//         return result
//     }
// 手写实现bind方法
// Function.prototype.bind = function(context, ...args) {
//         if (typeof this !== "function") {
//             throw new Error("this must be a function");
//         }
//         var self = this;
//         var fbound = function() {
//             self.apply(this instanceof self ? this : context, args.concat(Array.prototype.slice.call(arguments)));
//         }
//         if (this.prototype) {
//             fbound.prototype = Object.create(this.prototype);
//         }
//         return fbound;
//     }

http://www.niftyadmin.cn/n/724472.html

相关文章

扩展 CheckBoxList 控件 - 系结复选项目(2)

摘要 承上篇「扩展 CheckBoxList 控件 - 系结复选项目」中以整数值来描述复选项目,本文将以另一种方式,利用 Item 的 Value 或 Text 属性来描述复选项目,每个被勾选的项目,会将其 Value 或 Text 属性值,以逗点分隔的方…

浏览器的工作原理

1.用户输入一个url、点击一个链接、提交一个表单。 2.DNS查找 3.tcp三次握手,让两端尝试进行通信在发送数据前,SYN,SYN-ACK,ACK, 4.如果是https请求,进行TLS协商。 TCP慢开始/14kb规则:接受到第一个包的数据内容通常是14kb&#x…

图片压缩上传和下载的一点心得

本文参考自: 1.bomo的这篇博客 2.保存图片到媒体库的这篇文章 3.晴天猪的这篇文章 初衷是图片上传,节省流量,中间发现几个技巧,分享如下: 1.本地/拍照上传图片到网络(经过压缩) 注意&#xff1a…

欺骗词法作用域

欺骗词法作用域:在运行时修改词法作用域 1.eval: function foo(str,a){eval(str);console.log(a,b) } var b 2; foo("var b 3",1) //1,3执行foo()函数时eval()改变可foo的作用域,…

Infragitics ultra grid 实现点击某一个cell的时候选中整行,并且不可编辑

在初始化的时候 , 加一句 : ultraGrid1.DisplayLayout.Override.CellClickAction Infragistics.Win.UltraWinGrid.CellClickAction.RowSelect; 转载于:https://www.cnblogs.com/lthxk-yl/p/3957276.html

动态表单

动态表单 在设计业务工作流平台时,我们需要为结点绑定一组业务表单,本例独立演示了一种动态表单的实现技巧 例子下载:http://files.cnblogs.com/wxwinter/WPFDF.rar 很多时候,开发人员对数据验证的方案是,数据验证不通过就不能保存…

jQuery.extend 函数详解

JQuery的extend扩展方法: Jquery的扩展方法extend是我们在写插件的过程中常用的方法,该方法有一些重载原型,在此,我们一起去了解了解。 一、Jquery的扩展方法原型是:    extend(dest,src1,src2,src3...);它的含义是将…