Dalam JavaScript, jenis data rujukan ialah struktur data yang digunakan untuk menyusun data dan fungsi bersama-sama; ia juga sering dipanggil kelas. Nilai jenis rujukan ialah objek yang disimpan dalam ingatan (kedua-duanya dalam memori tindanan dan ingatan timbunan);
Persekitaran pengendalian tutorial ini: sistem Windows 7, versi JavaScript 1.8.5, komputer Dell G3.
Jenis data merujuk kepada jenis nilai yang boleh disimpan dan dimanipulasi dalam program Setiap bahasa pengaturcaraan mempunyai jenis data yang berbeza digunakan untuk menyimpan data yang berbeza, seperti teks dan nilai berangka. , imej, dsb.
Jenis data dalam JavaScript boleh dibahagikan kepada dua jenis:
Jenis data asas (jenis nilai): String, Number, Boolean (Boolean), Null, Undefined, Simbol;
Jenis data rujukan: Objek, Tatasusunan, Fungsi.
Dalam ECMAScript, jenis rujukan ialah Struktur data yang digunakan untuk menyusun data dan kefungsian bersama-sama (ia juga sering dipanggil kelas).
Nilai jenis rujukan ialah objek yang disimpan dalam ingatan (disimpan dalam ingatan tindanan dan ingatan timbunan). JavaScript tidak membenarkan akses terus ke lokasi dalam ingatan, jadi apabila anda mengendalikan objek, anda sebenarnya beroperasi pada rujukan kepada objek dan bukannya objek sebenar. Nilai jenis rujukan diakses melalui rujukan.
Terdapat dua cara untuk mencipta tika Object. Yang pertama ialah menggunakan operator baharu diikuti oleh pembina Objek, contohnya;
var person = new Object(); person.name = "Nicholas"; person.age = 29;
Cara lain ialah menggunakan tatatanda literal objek. Contohnya:
var person = { name : "Nicholas", age ; 29 }
Nota: Apabila mentakrifkan objek melalui literal objek, pembina Objek sebenarnya tidak dipanggil.
Terdapat dua cara asas untuk mencipta tatasusunan. Yang pertama ialah menggunakan pembina Tatasusunan, contohnya:
var colors = new Array();
Cara asas kedua ialah menggunakan tatatanda literal tatasusunan. Literal tatasusunan diwakili oleh sepasang kurungan segi empat sama yang mengandungi item tatasusunan Berbilang item tatasusunan dipisahkan dengan koma, contohnya:
var colors = ["red","blue","green"];
The. instanceof operator menganggap bahawa hanya terdapat satu persekitaran pelaksanaan global. Untuk menyelesaikan masalah ini, ECMAScript 5 menambah kaedah Array.isArray(). Tujuan kaedah ini adalah untuk menentukan sama ada nilai ialah tatasusunan, tanpa mengira konteks pelaksanaan global di mana nilai itu dicipta.
Semua objek perluLocaeString( ) , kaedah toString() dan valueOf().
Memanggil kaedah toString() tatasusunan akan mengembalikan rentetan yang dipisahkan koma; Memanggil valueOf() Apa yang dikembalikan masih merupakan tatasusunan.
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高级教程】
Atas ialah kandungan terperinci Apakah jenis data rujukan javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!