JS提供了一些内置对象、函数和构造器供我们编程,如Math、parseInt、Object、Array等。这些都是可见的,编程时可以使用的。比如我可以new Object 或 new Array。
有一些则是不可见的,这些对象只能由引擎在特殊的情形提供。这些类型的对象往往还被消减了一些功能。下面列举一些
一、Arguments 类型
Arguments 类型 不能由程序员手动创建其对象,即你不能 new Arguments() 。 它有且仅有一个对象arguments
function func() { console.log(arguments[0]) // 1 console.log(arguments.length) // 3 } func(1, 2, 3)
arguments对象是在函数调用的时候创建的,只在函数内部可见和使用。可以看到arguments很象Array,可以按索引取元素,也有length属性。但它不是Array,它没有Array的有一些方法比如push、pop等。Arguments 在ES5 10.6 里定义。
二、bind返回的函数很特殊
bind是ES5给Function.prototype新增的一个方法,它和call/apply一样在function上直接调用。它返回一个指定了上下文和参数的函数。
function func(age) { console.log('name: ' + this.name + ', career: ' + age) } var person = {name: 'John McCarthy'} var f1 = func.bind(person, 'computer scientist') f1() // name: John McCarthy, career: computer scientist
可以看到返回的函数f1和普通函数一样使用小括号执行调用了。 一切正常,但下面的代码会让你大跌眼镜
function func(age) { console.log('name: ' + this.name + ', career: ' + age) } var person = {name: 'John McCarthy'} var f1 = func.bind(person, 'computer scientist') console.log(f1.prototype) // undefined
和上面代码比较,就最后一句不同,没有执行f1(),而是打印出f1.prototype,发现是undefined。
奇怪吗? 每个function不都有一个prototype属性吗,这是用来实现原型继承的哦。的确,bind返回的function比较特殊,它没有prototype。这种特殊的函数是由JS引擎创建的,客户端程序员没法通过函数声明或函数直接量得到。
这一点在规范里有明确提示 ES5 15.3.4.5
三、大家补充...
相关推荐
类型转换是网页编程不可或缺的内容,本文先介绍自动类型转换,...在数值数据类型中,还有NaN等特殊值。JavaScript 是一种松散类型、动态类型的语言,在声明变量时无需指定数据类型,使JavaScript 具有灵活性和简单性。
本文将深入探讨其中两种不可见数据类型:Arguments对象和bind返回的函数。 首先,让我们来看Arguments对象。在JavaScript中,当函数被调用时,如果传递了参数,这些参数会被封装到一个名为Arguments的对象中。...
理解JavaScript的数据类型有助于编写更健壮、更可维护的代码。在日常编程中,合理使用不同类型能提高代码的可读性和效率,同时避免因类型错误导致的意外行为。希望这些详细解释能帮你理清JavaScript数据类型的概念,...
在JavaScript中,虽然原始类型(如字符串、数字和布尔值)本身就是不可变的,但复杂的数据结构如数组和对象则是可变的。 ### 不可变操作的重要性 1. **防止意外修改**:不可变操作确保数据在任何时候都不会被意外...
本篇将深入探讨JavaScript中的数据类型,包括基本数据类型、引用数据类型以及ES6引入的新的数据类型。 1. **基本数据类型** JavaScript中的基本数据类型包括: - **Undefined**:表示变量未定义或值不存在。 - *...
本篇文章将深入解析JavaScript中的数据类型,并通过示例代码来进一步理解不同类型之间的转换。 #### 基础数据类型(Primitive Types) JavaScript中有六种基础数据类型: 1. **Undefined**:表示未定义的值。 2. ...
在JavaScript中,数据类型是一个非常重要的概念,它决定了变量如何存储和操作数据。JavaScript是一种动态类型语言,这意味着我们不需要在声明变量时指定其类型,它会自动根据赋值来确定。然而,JavaScript的数据类型...
JavaScript是Web开发中不可或缺的一部分,尤其对于前端开发者来说,它是构建动态网页的关键工具。本文将深入探讨JavaScript的基础语法,包括变量、数据类型、数据类型转换和运算符。 1. 变量(Variable) 变量是...
JavaScript是Web开发中不可或缺的一部分,它是一种轻量级的脚本语言,主要应用于网页和网络应用的客户端编程。这份“JavaScript中文手册”旨在为开发者提供详尽的JavaScript语言指南,帮助他们理解和掌握这一强大的...
在JavaScript中,数据类型的转换是编程中不可或缺的一部分。在处理不同数据类型时,JavaScript会自动进行类型转换,以便于执行特定的操作。以下是关于JavaScript中数据类型转换的详细说明: 1. **原始数据类型转换*...
JavaScript是一种动态类型的语言,这意味着在编写代码时,无需预先声明变量的数据类型。它有四种基本数据类型:数值、字符串、布尔值和...理解JavaScript的数据类型和它们的行为对于编写健壮、可维护的代码至关重要。
在《JavaScript完全入门_04__JavaScript的数据类型和运算符.pdf》这份资料中,主要介绍了JavaScript中的基础概念,包括语法规则、基本数据类型、变量、表达式与运算符等内容。通过本篇文章,我们将深入探讨这些知识...
JavaScript是一种广泛用于网页和网络应用的轻量级脚本语言,尤其在Web开发中不可或缺。在JavaScript中,数据类型是理解其工作原理的关键概念。本文将深入探讨JavaScript中的数据类型,包括基本数据类型和引用数据...
JavaScript是Web前端开发中至关重要的编程语言,它以其灵活的动态数据类型而闻名。在JavaScript中,数据类型分为两种主要类别:基本数据类型和复杂数据类型。基本数据类型包括数字型、字符串型、undefined、null以及...
在JavaScript中,数据类型分为两大类:基本数据类型和引用数据类型。基本数据类型包括字符串(String)、数字(Number)、布尔(Boolean)、空(Undefined)和无(Null),而引用数据类型主要是对象(Object)和数组...
在JavaScript中,数据类型分为两种主要类别:基本数据类型(也称为原始数据类型)和引用数据类型。 基本数据类型包括五种: 1. **String**:字符串类型,用于存储文本信息。字符串是由一个或多个字符组成的序列,...
在给定的内容中,首先介绍了JavaScript中的基本数据类型和引用数据类型的定义、区别和联系,并通过图解的方式进行说明。接着,内容深入探讨了基本类型和引用类型的生命周期以及基本类型的特性。下面详细解读这些知识...