计算机编程冷知识,函数与对象的桥梁,窥探特殊方法的经典代码

核心提示计算机编程冷知识,函数与对象的桥梁,窥探javascript编程语言中,特殊方法call与apply的经典实例代码。1、函数特殊性:在javascript编程中,函数也是对象,所有定义的函数都是Function类型的实例。函数有2个属性le

计算机编程知识,函数和对象之间的桥梁,javascript编程语言中特殊方法调用和应用的经典示例代码。

1.函数特殊性:在javascript编程中,函数也是对象,所有定义的函数都是函数类型的实例。该函数有两个属性长度和原型。还有两个特殊的方法,调用和应用。这两种方法都是非继承方法,是函数和其他对象之间的桥梁,促进了单个函数范围的突破,形成了强大的网络函数和对象的完美结合。

图A 函数就是对象

2.函数属性:函数有两个属性长度和原型。Length比较简单,就是传入函数的参数个数。Protoytpe是函数的prototype属性,实际上是指向prototype对象的指针。这个对象是特殊的,它致力于保存原型属性和方法。此函数调用生成的实例共享prototype属性下的所有属性和方法。所以原型属性也是原型继承的基础。

图B 函数2个属性

3.特殊方法:调用方法和应用方法。这两个方法不是继承的,作用很特殊。它们充当函数和函数之间以及函数和对象之间的桥梁。把两个不相关的函数、函数和对象联系起来,突破了函数本身范围的限制,增强了功能。

非继承函数之所以能起到函数和对象之间的桥梁作用,其实是因为它们可以改变函数中this的值,实现运行范围的选择,最终实现函数和函数,函数和对象之间的函数连接。

图D 函数连接器

4.示例代码-调用方法:如图E,定义两个函数,addnumber和call_add。这两个功能本来就是独立的个体,各自有自己的运行空室,彼此之间从来没有联系。函数内部有一个调用方法,它是和平缔造者,充当独立函数的媒人,必要时在函数之间搭建桥梁。因此,通过call方法,函数call_add可以访问函数addnember的返回值。从而突破自身范围的限制。需要注意的是,call方法接受的参数必须明确列出,不能是数组或arguments对象,这与apply方法正好相反。

图E call参数

5.示例代码—应用方法。app方法与call方法的功能相同,但接收参数的方式却大不相同。Apply接收一个数组[x,y];addnumber.apply接收arguments对象,而不是特定的参数。形式不同,但都可以实现相同的功能。

图F apply2种参数形式

讨论:无功能,无编程。函数在主流编程语言中是不可或缺的。深入理解函数是编程语言入门的唯一途径。请分享你对该功能的理解或使用时遇到的问题。

 
友情链接
鄂ICP备19019357号-22