好家伙,本篇为《JS高级程序设计》第十章“函数”学习笔记

ECMAScript 中的函数是对象,因此有属性和方法。

1.函数属性

每个函数都有两个属性:length 和 prototype。

length属性: 保存函数定义的命名参数的个数

prototype: toString()、valueOf()等方法实际上都保存在 prototype 上,进而有所有实例共享

2.函数方法

2.1.apply()方法和call()方法

通过 apply() 方法,您能够编写用于不同对象的方法。

(在一个对象中调用另一个对象的方法)

function sum(a, b) {
return a + b;
} function getSum(a, b) {
return sum.apply(this, arguments);
} console.log(getSum(1, 2));

call()方法和apply()方法不同的地方在于

(1) apply() 方法接受数组形式的参数

(2) call() 方法分别接受参数。

示例如下:

function sum(a, b) {
return a + b;
} function getSum(a, b) {
return sum.call(this, a, b);
} console.log(getSum(1, 2));

 

这时候有人会问了,那我直接调用不就好了,为什么要用apply()和call()

我们可以用参数this去设置任意函数的作用域

window.color = 'red';
let o = {
color: 'blue'
};
function sayColor() {
console.log(this.color);
}
sayColor(); // red
sayColor.call(this); // red 此处this指向window
sayColor.call(window); // red
sayColor.call(o); // blue

所以,大概出来使用apply()方法和call()方法的好处了

使用 call()或 apply()的好处是可以将任意对象设置为任意函数的作用域

2.2.bind()

bind()方法会创建一个新的函数实例, 其 this 值会被绑定到传给 bind()的对象。

window.color = 'red';
var object_1 = {
color: 'blue'
}; function sayColor() {
console.log(this.color);
}
let objectSayColor = sayColor.bind(object_1); objectSayColor(); // blue objectSayColor = sayColor.bind(window); sayColor(); objectSayColor();

第123篇: JS函数属性与方法的更多相关文章

  1. 《JS权威指南学习总结--8.7 函数属性、方法和构造函数》

    内容要点:   在JS程序中,函数是值.对函数执行typeof运算会返回字符串 "function",但是函数是JS中特殊的对象.因为函数也是对象,它们也可以拥有属性和方法,就像普 ...

  2. js中属性和方法的类型和区别

    对象的属性:私有属性(var).类属性(静态属性).对象属性(this).原型属性(prototype). 对象的方法: 私有方法(funtion).类方法(静态方法).对象方法(this).原型方法 ...

  3. call,apply,bind——js权威指南函数属性和方法章节读书笔记

    每个函数(即这两个方法是函数的方法)都包含两个非继承而来的方法: apply()和 call().参数明确,使用call.参数不明确,使用apply,可以遍历数组参数 1,call里面的参数是散开的, ...

  4. javascript——函数属性和方法

    <script type="text/javascript"> //每个函数都包含两个属性:length 和 prototype //length:当前函数希望接受的命 ...

  5. apply方法和call方法。函数属性与方法。

    每个函数都有length属性哥prototype属性. length属性表示的是函数接入参数的个数 在es引用类型语言中,prototype是保存它们所有实例方法的真正所在.换句话来说,类似于toSt ...

  6. wordpress下一篇next_post_link函数的使用方法

    我们在用wordpress开发时经常会用到上一篇下一篇的功能,<?php previous_post_link('%link') ?> <?php next_post_link('% ...

  7. Js节点属性与方法

    属性: Attributes     存储节点的属性列表(只读) childNodes 存储节点的子节点列表(只读) dataType     返回此节点的数据类型 Definition     以D ...

  8. JS遍历属性和方法

    引用原文:http://www.cnblogs.com/lishenglyx/archive/2008/12/08/1350573.html#undefined <script language ...

  9. summery 总结篇 访问对象属性的方法

    访问一个对象的属性有两种方法: (1),通过“.”来访问:object.propertyName; (2),通过[]来访问:object[propertyName]; 访问一个对象的方法只能通过“.” ...

  10. UI5-技术篇-JS函数eval动态执行

    <html lang="en"> <head> <meta charset="utf-8" /> <title> ...

随机推荐

  1. [转帖]linux中top命令显示不全怎么解决

    https://www.yisu.com/zixun/697775.html 这篇"linux中top命令显示不全怎么解决"文章的知识点大部分人都不太理解,所以小编给大家总结了以下 ...

  2. [转帖]Traefik中诡异的502和504问题

    https://zhuanlan.zhihu.com/p/156138704 我们都知道在 Kubernetes 集群中通常会使用 Ingress 方案来统一代理集群内部的流量,而常用的 Ingres ...

  3. echarts定义饼状图的指向线内容

    定义饼状图的指向线内容 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  4. 在vscode中运行bat文件(执行bat)并解决中文乱码问题

    使用vscode编写bat脚本让工作流得到了极大的改善 以前:在文本编辑器中写完,保存,回到资源管理器双击bat运行,再循环重复 现在:在vscode中编写bat,按下快捷键执行bat 在vscode ...

  5. 【四】AI Studio 项目详解【VisualDL工具、环境使用说明、脚本任务、(四)图形化任务、在线部署及预测】PARL

    相关文章 [一]-环境配置+python入门教学 [二]-Parl基础命令 [三]-Notebook.&pdb.ipdb 调试 [四]-强化学习入门简介 [五]-Sarsa&Qlear ...

  6. 2.6 PE结构:导出表详细解析

    导出表(Export Table)是Windows可执行文件中的一个结构,记录了可执行文件中某些函数或变量的名称和地址,这些名称和地址可以供其他程序调用或使用.当PE文件执行时Windows装载器将文 ...

  7. C#使用Tamir.SharpSsh.jsch上传文件异常Algorithm negotiation fail

    环境 服务器:centos6.5 客户端:Windows 前言 项目中有一个exe,安装在客户端,其中有一个功能是将本地产生的文件上传至服务器,这个功能是以服务的方式安装在客户端上.之前一切好使,文件 ...

  8. 【OpenCV】在Linux上使用OpenCvSharp

    前言 OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,它具有C++,Python,Java和MATLAB接口,并支持Windows,Linux,Androi ...

  9. KB0004.如何进行DoraCloud版本升级?

    升级过程为: 1).现有版本,进入维护模式,导出系统数据.    2).记录现当前版本DoraCloud VM 的IP地址,子网掩码.网关.DNS信息,将VM关机. 3).安装新版本DoraCloud ...

  10. TCP和UDP面试题提问

    @ 目录 TCP UDP 总结 应用 TCP(传输控制协议)和UDP(用户数据报协议)是两种计算机网络通信协议,它们在网络通信中起着不同的作用. TCP TCP 是面向连接的协议,它在数据传输之前需要 ...