首页IT科技深入理解计算机系统 第三版 pdf百度网盘(深入理解 apply()方法)

深入理解计算机系统 第三版 pdf百度网盘(深入理解 apply()方法)

时间2025-04-30 23:22:46分类IT科技浏览3278
导读:apply(thisArg ...

apply(thisArg)

apply(thisArg, argsArray)

thisArg

在func函数运行时使用的this值           。请注意           ,this可能不是该方法看到的实际值:如果这个函数处于非严格模式下               ,则指定为null或undefined时会自动替换为指向全局对象     ,原始值会被包装               。

argsArray可选

一个数组或者类数组对象           ,其中的数组元素将作为单独的参数传给func函数     。如果该参数的值为null或undefined                ,则表示不需要传入任何参数           。从 ECMAScript 5 开始可以使用类数组对象                。浏览器兼容性请参阅本文底部内容     。

返回值

调用有指定this值和参数的函数的结果     。

1.数组合并用法

2.内置函数用法

const num = [2, 5, 3, 6, 9, 0, 99]; //2.1 错误用法 let max1 = Math.max(num); // console.log(max1);//NaN //2.2 apply() let max2 = Math.max.apply(null, num); // console.log(max2);//99 //2.3 es6 let max3 = Math.max(...num); // console.log(max3);//99 //2.4 call() let max4 = Math.max.call(null, ...num); // console.log(max4);//99

3.apply链接构造器用法

你可以使用 apply 来链接一个对象构造器     ,类似于 Java                。(Java的对象构造器用来创建对象     ,也可以对对象属性做一些特殊处理                ,如时间格式化)

在接下来的例子中我们会创建一个全局Global_Objects/Function对象的construct方法          ,来使你能够在构造器中使用一个类数组对象而非参数列表          。

个人理解:给全局的Function 类定义一个construct方法     ,并且在construct方法中根据现有对象创建一个新的对象                ,利用apply链接构造器          ,返回一个新的对象,此时对全局的Function对象拥有了一个的construct方法                ,能够返回类数组对象

注意               ,这个construct方法是新定义的,不是原本的constructor 定义中描述的类数组对象是下图的样子:
//给全局的Function 类定义一个construct方法           ,并且在construct方法中创建一个新的对象               ,利用apply链接构造器     ,返回一个新的对象 Function.prototype.construct = function (aArgs) {
  //Object.create() 静态方法以一个现有对象作为原型           ,创建一个新对象
let oNew = Object.create(this.prototype); this.apply(oNew, aArgs); return oNew; }; function MyConstructor() {  //这里就是对数组进行遍历                ,然后封装成k:v的形式 for (let nProp = 0; nProp < arguments.length; nProp++) { this["property" + nProp] = arguments[nProp]; } } //定义一个数组 let myArray = ["zooey", "Hello world!", "anan"]; let myInstance = MyConstructor.construct(myArray); //打印结果 console.log(myInstance);
声明:本站所有文章     ,如无特殊说明或标注     ,均为本站原创发布     。任何个人或组织                ,在未征得本站同意时          ,禁止复制           、盗用               、采集     、发布本站内容到任何网站           、书籍等各类媒体平台                。如若本站内容侵犯了原著者的合法权益     ,可联系我们进行处理          。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
grahamcoxon(Graham King » Inmemory keyvalue store in C, Go and Python) pdcn内网穿透(使用 cpolar 内网穿透将本地 web 网站发布上线(无需服务器))