javascript函数的几个相关概念
说明:
文中提到的Function类对象指new Function(..);
普通对象指new T();
---------------------------------------------------------------
概念1. 一个函数被定义, 实际上就是创建了一个Function类的对象.
---------------------------------------------------------------
方法1(标准)
function showText(text)
{
alert(test);
}
showText("hi, tomsui!~");
方法2
show = function showText(text)
{
alert(text);
}
show("hi, tomsui!~");
方法3(匿名方法)
show = function(text)
{
alert(text);
}
show("hi, tomsui!~");
方法4(显式定义对象)
show = new Function("text","alert(text);");//这个方法更能解释该概念
show("hi, tomsui!~");
注意: 作为一个对象,肯定会有默认的toString(),可以直接打印这个对象,其实就是函数体本身:
alert(show) // function anonymous(text) { alert(text); }
alert((showText)) // function showText(text) { alert(test); }
---------------------------------------------------------------
概念2. Function类的对象和Object(根)有prototype属性
---------------------------------------------------------------
这个prototype属性是一个对象:
function showText(text)
{
alert(test);
}
alert(showText.prototype); // [object, Object]
alert(typeof(showText.prototype)); // object
alert(showText.prototype.constructor); // function showText(text) { alert(test); }
构造器的prototype属性作为一个object, 本身存在一个不可for-in的属性"constructor",指向该构造器本身(打印出来的话是函数体定义)
注意: "Function类的对象",不是每一个普通对象(通过new关键字生成)都有prototype属性的!
---------------------------------------------------------------
概念3. Function类的对象有一个constructor属性
---------------------------------------------------------------
function showText(text)
{
alert(test);
}
alert(showText.constructor); // function Function() { [native code] }
alert(typeof(showText.constructor)); // function
关于Function类的对象(showText函数)的constructor属性:
1) 是"一段不可显示的本地代码" (而不像是showText的prototype属性一样是一个对象)
2) 它的类型是"function"
注意:普通对象也有constructor属性,和Function类的对象相似,区别只是1)中是“一段可以显示的本地代码”。
---------------------------------------------------------------
总结. prototype属性,constructor属性, construct属性 概述
---------------------------------------------------------------
//==================待定 开始===========================
如果把对象( 根据一个对象是否为Function对象 )分为两类:
a. 一个函数对象 (Function类的对象)
b. 一个普通对象 (通过new关键字结合构造函数创造的"非Function类"对象)
那么:
1. 函数对象存在prototype 属性, 而普通对象不存在;
2. 函数对象存在constructor属性, 普通对象不存在; constructor属性的type是"function",toString后是一段“本地代码”(native),
3. 普通对象存在construct 属性, 函数对象不存在; construct 属性是type是"function" ,toString后是“函数代码本身”,
//===================待定 结束==========================
转自:http://hi.baidu.com/flvu/blog/item/3a343e677a154c29ab184cbf.html
分享到:
相关推荐
函数式编程指南通常会涵盖以下几个重要知识点: 一等公民的函数:在函数式编程中,函数是一等公民,这意味着函数可以作为参数传递给其他函数、作为结果返回,也可以被赋值给变量。这一特性让代码更加灵活,支持高级...
JavaScript函数式编程的知识点非常丰富,涉及很多方面的内容,下面将详细介绍几个核心知识点。 1. 函数式编程基础 函数式编程(Functional Programming)是一种编程范式,它将计算视为数学函数的评估,并且避免...
下面将详细解释与高阶函数相关的几个关键概念。 首先,文档提到了函数作为参数传递的情况。例如,funcTest函数接受一个函数f作为参数,并对其进行检查。这是高阶函数的一个典型用法,它能够通过参数传递其他函数以...
以下是几个重要的JavaScript函数相关知识点: 1. **定义函数**:你可以使用`function`关键字来定义一个函数,例如`function add(a, b) { return a + b; }`,这个例子定义了一个名为`add`的函数,它接收两个参数`a`...
为了更好地理解函数式编程在JavaScript中的应用,我们来看几个具体的示例: ##### 扩展数组排序 假设我们需要对一个数组进行排序,但不是简单的升序或降序,而是需要按照某种特定的规则进行排序。使用函数式编程...
通过上述几种方法,我们可以有效地将字符串作为参数传递给自定义的JavaScript函数。需要注意的是,在不同的场景下,选择合适的传递方式非常重要。例如,在DOM操作中使用`this`可以简化代码;而在复杂的字符串处理中...
JavaScript的函数劫持是一种高级编程技巧,主要用于调试、性能分析或者在不修改原始代码的情况下扩展或改变既有功能...但是,理解了上述函数劫持的概念和实现方式,你应该能更好地理解和应用相关的JavaScript编程技巧。
接下来,我们将深入探讨高阶函数的几个关键概念和实际应用。 首先,参数为函数的高阶函数,如示例中的`funcTest`函数,它接受一个函数作为参数并在内部执行该函数。这在处理回调函数时非常常见,例如在事件处理或...
`new`操作符实际上执行了几个步骤:创建一个新对象,将新对象的`[[Prototype]]`链接到构造函数的`prototype`,然后在新对象上执行构造函数,并返回新对象。此外,我们还可以通过`call`或`apply`方法模拟`new`的行为...
下面通过几个具体的示例来进一步解释不同的函数定义方式: 1. **声明式函数**: ```javascript function myFunction(a, b) { return a + b; } ``` 这是一个简单的加法函数,可以直接通过`myFunction(1, 2)`调...
重点讨论了递归求解典型数学问题的具体实现方法,如100的阶乘、斐波那契数列前20项等,同时也深入介绍了如何通过匿名函数构建闭包、使用构造函数和工厂模式创建对象,最后提供了几个实战小案例来帮助读者更好地理解...
JavaScript中的函数对象调用模式是编程中至关重要的概念,它涉及到函数作为一等公民、作用域、闭包、原型链等多个核心知识点。这篇博客通过深入分析JavaScript中的函数调用模式,帮助开发者更好地理解和掌握这些概念...
- 实现一个简单的计算器应用,其中包含几个嵌套函数用于处理不同的数学运算。 - 编写一段代码,在函数内部调用外部函数,并尝试访问内部函数的局部变量,观察结果。 - 阅读更多关于JavaScript闭包、作用域链的文章和...
在讨论JavaScript编程语言时,匿名函数和闭包是两个重要的概念,它们在函数式编程和模块化代码设计中扮演着核心角色。匿名函数是没有具体名称的函数,它们可以是独立的,也可以是表达式的一部分,通常用于定义临时...
### 关于JavaScript函数的关键知识点 #### 一、函数对象与函数指针 在JavaScript中,函数不仅是一种...以上就是关于JavaScript函数的一些核心概念和关键知识点,了解这些有助于更深入地理解和应用JavaScript语言。
在Ramda中,主要包含以下几个方面的知识点: 1. **函数优先**:Ramda的设计将函数放在首位,鼓励使用高阶函数进行数据处理。例如,`map`、`filter`和`reduce`等函数,它们可以用于遍历数组并进行变换。 2. **柯里...
在这个"JavaScript制作的几个简单网页"项目中,我们可以深入学习JavaScript的基础知识以及如何在实际应用中使用它。 首先,JavaScript的基本语法是学习的重点。包括变量声明(var、let、const)、数据类型(如字符...
#### JavaScript函数 函数是JavaScript的核心组成部分,封装了一段代码,只有在特定事件触发或被显式调用时才执行。通过将代码组织成函数,可以实现代码的重用和模块化,提高开发效率。例如,可以创建一个函数,在...
匿名函数与闭包密切相关,闭包是指有权访问另一个函数作用域中的变量的函数,即使在其父函数已经执行完毕之后。在JavaScript中,任何函数都可以形成闭包,包括匿名函数。例如: ```javascript function outer() { ...
回调函数在实际开发中的应用非常广泛,下面列举几个典型的场景: - **事件监听**:为DOM元素绑定事件监听器时,通常会使用回调函数来处理事件触发后的逻辑。 - **定时器**:`setTimeout`和`setInterval`这两个函数...