好家伙,本篇为《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. MYSQL 日志参数与性能的关系

    1. 先看一下mysql技术内幕 innodb存储引擎的一个结果 以及各个参数的含义

  2. element-ui表格排序

    <el-table :data="TableAwitDoArr" style="width: 100%"> <el-table-column ...

  3. 【解决一个小问题】macbook m2 上交叉编译 gozstd

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 已知 zstd 是一个优秀的压缩库,gozstd封装了这个 ...

  4. 微服务用yml安装系统(第一版)

    当用微服务安装系统后,面临服务较多,一个一个安装比较麻烦,是否有统一的脚本可以直接执行安装呢?答案是肯定的: 1.首先介绍一下所有安装脚本,如下图 spd-volume:是各服务外挂的资料卷 comm ...

  5. MySQL 之多表连查(精简笔记)

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RD ...

  6. 5.字典--《Python编程:从入门到实践》

    5.1 字典   在 Python 中,字典是一系列键-值对.键不能重复,否则对应的值是后面一个. 5.1.1 键-值队的添加与修改 alien_0 = {'color': 'green', 'poi ...

  7. Python 国内常用python模块下载地址

    国内常用python模块下载地址 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple 中国科技大学 https://pypi.mirrors.ustc.edu. ...

  8. [Java]HashMap与ConcurrentHashMap的一些总结

    HashMap与ConcurrentHashMap的一些总结 HashMap底层数据结构 JDK7:数组+链表 JDK8:数组+链表+红黑树 JDK8中的HashMap什么时候将链表转为红黑树? 当发 ...

  9. Yum安装的Nginx安装新模块解决办法

    Nginx版本1.22 Yum安装 Step1 去官网下载对应版本的源码包 Nginx源码包官网下载地址 Step2 上传到服务器 tar -xf nginx-1.22.1.tar.gz cd ngi ...

  10. 精读JavaScript模式(九),JS类式继承与现代继承模式其二

    壹 ❀ 引 二零一九年的三月二十号,我记录了精读JavaScript模式(八)这篇读书笔记,今天是二零二零年三月十五号,相差五天,其实也算时隔一年,我重新拿起了这本书.当前为什么没继续写下去呢,主要还 ...