Maison > Article > interface Web > Quel est le type de données de référence de javascript
En JavaScript, un type de données de référence est une structure de données utilisée pour organiser les données et les fonctionnalités ensemble ; elle est aussi souvent appelée classe. Les valeurs des types référence sont des objets stockés en mémoire (à la fois dans la mémoire de pile et dans la mémoire tas) ; les valeurs des types référence sont accessibles par référence ;
L'environnement d'exploitation de ce tutoriel : système Windows 7, JavaScript version 1.8.5, ordinateur Dell G3.
Le type de données fait référence au type de valeur qui peut être stockée et manipulée dans le programme. Chaque langage de programmation a ses types de données pris en charge. Différents types de données sont utilisés pour stocker différentes données, telles que du texte, des valeurs numériques, des images, etc.
Les types de données en JavaScript peuvent être divisés en deux types :
Types de données de base (types de valeur) : Chaîne, Nombre, Booléen, Null, Non défini (Non défini), Symbole
Types de données de référence : Objet, Tableau, fonction.
Dans ECMAScript, un type de référence est une structure de données utilisée pour organiser les données et les fonctionnalités ensemble (on l'appelle aussi souvent une classe).
La valeur du type référence est un objet stocké en mémoire (enregistré à la fois dans la mémoire de pile et dans la mémoire de tas). JavaScript ne permet pas d'accéder directement aux emplacements en mémoire, donc lorsque vous opérez sur un objet, vous opérez en réalité sur une référence à l'objet plutôt que sur l'objet réel. Les valeurs des types référence sont accessibles par référence.
Il existe deux façons de créer une instance d'objet. La première consiste à utiliser l'opérateur new suivi du constructeur Object, par exemple
var person = new Object(); person.name = "Nicholas"; person.age = 29;
L'autre consiste à utiliser la notation littérale d'objet. Par exemple :
var person = { name : "Nicholas", age ; 29 }
Remarque : Lors de la définition d'un objet via un littéral d'objet, le constructeur Object n'est pas réellement appelé.
Il existe deux manières de base de créer un tableau. La première consiste à utiliser le constructeur Array, par exemple :
var colors = new Array();
La deuxième méthode de base consiste à utiliser la notation littérale du tableau. Un littéral de tableau est représenté par une paire de crochets contenant des éléments de tableau, avec plusieurs éléments de tableau séparés par des virgules, par exemple :
var colors = ["red","blue","green"];
L'opérateur instanceof suppose qu'il n'existe qu'un seul environnement d'exécution global. Afin de résoudre ce problème, ECMAScript 5 a ajouté la méthode Array.isArray(). Le but de cette méthode est de déterminer in fine si une valeur est un tableau, quel que soit le contexte d'exécution global dans lequel elle a été créée.
Tous les objets ont les méthodes toLocaeString(), toString() et valueOf().
L'appel de la méthode toString() d'un tableau renverra une chaîne séparée par des virgules ;
L'appel de toLocaleString() est identique à toString(), mais la chaîne correspond à la région de l'environnement d'exécution ;
L'appel de valueOf() renvoie toujours ; un tableau. La méthode
join() n'accepte qu'un seul paramètre, qui est une chaîne utilisée comme séparateur, et renvoie une chaîne contenant tous les éléments du tableau.
ECMAScript fournit des méthodes push() et pop() spécifiquement pour les tableaux afin d'obtenir un comportement de type pile. La méthode push() peut accepter n'importe quel nombre de paramètres, les ajouter un par un à la fin du tableau et renvoyer la longueur modifiée du tableau. La méthode pop() supprime le dernier élément de la fin du tableau, décrémente la longueur du tableau et renvoie l'élément supprimé.
shift() supprime le premier élément du tableau et le renvoie, tout en réduisant la longueur du tableau de un. La combinaison des méthodes shift() et push() vous permet d'utiliser des tableaux comme des files d'attente.
ECMAScript fournit également une méthode unshift() pour les tableaux. Comme son nom l'indique, unshift() fait le contraire de shift() : il ajoute n'importe quel nombre d'éléments au début d'un tableau et renvoie la longueur du nouveau tableau.
La méthode reverse() inverse l'ordre des éléments du tableau.
Par défaut, la méthode sort() trie les éléments du tableau par ordre croissant, c'est-à-dire que la plus petite valeur est au début et la plus grande valeur est à la fin. Pour implémenter le tri, la méthode sort() utilise la méthode de conversion toString() de chaque élément du tableau, puis compare les chaînes résultantes pour déterminer comment trier. Cette méthode de tri n'est pas optimale dans de nombreux cas, donc la méthode sort() peut recevoir une fonction de comparaison en tant que paramètre pour spécifier quelle valeur précède quelle valeur.
La valeur de retour des méthodes reverse() et sort() est le tableau trié
concat()方法可以基于当前数组中的所有项创建一个新数组。
slice()方法能够基于当前数组中的一或多个项创建一个新数组。slice()方法可以接受一或者两个参数,即要返回项的起始和结束位置。(不会改变原数组)
splice()方法主要是向数组的中部插入值。(删除、插入、替换)该方法改变原数组的值。
ECMAScript为数组实例添加了两个位置方法:indexOf()和lastindexOf()这两个方法都返回要查找的项在数组中的位置,或者在没有找到的情况下返回-1。这两个方法都接受两个参数:要查找的项和表示查找起点位置的索引(可选的)。
ECMAScript为数组定义了五个迭代方法:
every():对数组中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回 true。
filter():对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。
forEach():对数组中的每一项运行给定函数。这个方法没有返回值。
map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
some():对数组中的每一项运行给定函数,如果该函数对任一项返回 true,则返回 true。
ECMAScript 5 还新增了两个归并数组的方法:reduce()和 reduceRight()。这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。
使用 reduce()和reduceRight()方法可以执行求数组中所有值之和的操作,比如:
var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array){
return prev + cur;
});
alert(sum); //15
创建日期对象,使用new操作符和Date构造函数即可:
var now = new Date();
在调用Date构造函数而不传递参数的情况下,新创建的对象自动获得当前日期和时间。 为了可以接受表示日期的字符串参数,ECMAScript提供了两个方法:Date.parse()和Date.UTC()。
ECMAScript添加了Date.now()方法,返回表示调用这个方法时的日期和时间的毫秒数。
Date类型也重写了toLocaleString()、toString()和valueOf()方法。
toLocaleString()方法会按照与浏览器相适应的格式返回日期与时间,而toString()方法则通常返回带有时区信息的日期和时间。至于valueOf()方法,则根本不返回字符串,而是返回日期的毫秒表示。
函数实际上是对象,函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定。每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法。
函数通常是使用函数声明语法定义的:(函数声明提升)
function sum (sum1,sum2) { return sum1 + sum2; }
还有一种方式,使用函数表达式定义函数:
var sum = function(sum1,sum2) { return sum1 +sum2 ; };
注意:要访问函数指针而不执行函数的话,必须去掉函数名后面的圆括号。
在函数内部,有两个特殊的对象:arguments和this。arguments是一个类数组对象,包含着传入函数中的所有参数。该对象有一个属性,该属性有一个指针,指向拥有这个arguments对象的函数。this引用的是函数据以执行的环境对象。(当在网页的全局作用域中调用函数时,this对象引用的就是window)
每个函数都包含两个属性:length和prototype。
length属性表示函数希望接收的命名参数的个数。
对于ECMAScript中的引用类型而言,prototype是保存它们所有实例方法的真正所在。prototype属性是不可枚举的,所以使用for-in无效。
每个函数都包含两个非继承而来的方法:apply()和call()
这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值。作用实例:1.传递参数 2.扩充函数赖以运行的作用域
EAMAScript还定义了一个方法:bind()
这个方法会创建一个函数的实例,其this值会被绑定到传给bind()函数的值。
每个函数继承的toLocaleString()、toString()和valueOf()方法始终都返回函数的代码。
对象是某个特定引用类型的实例。新对象是使用new操作符后跟一个构造函数来创建的。
new运算符的作用是创建一个对象实例。这个对象可以是用户自定义的,也可以是带构造函数的一些系统自带的对象。如果 new 表达式之后的构造函数返回的不是JavaScript内置的引用对象(Object,String等)new会创建一个匿名对象并返回;如果是内置引用对象或者原始类型就会覆盖匿名对象。(无 return 时其实为 return 原始类型 undefined)
构造函数本身就是一个函数,只不过该函数是出于创建新对象的目的而定义的。
使用typeof检测数据类型的时候,只要检查的变量是一个对象,或者是null,那么它就会返回object。
Object 是 JavaScript 中一个重要的对象,其它对象都是基于它的,包括你创建的函数。
确定一个值是哪种基本类型可以使用 typeof操作符,而确定一个值是哪种引用类型可以使用instanceof操作符。
ECMAScript 的Function实际上就是一个功能完整的对象。而function这个关键字是用来创建所有对象的构造函数或者使用关键字来定义普通函数的类和对象,var a=new function(){}实际上是用构造函数的方法创建了一个匿名对象的实例,而并不是系统内置对象Function的实例。所以a instanceof Function返回false,typeof返回"object"。
什么时候typeof返回"function"呢?
function a (){ } //undefined typeof a //"function"
【推荐学习:javascript高级教程】
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!