手机版

Javascript基本回顾(一)类型

时间:2021-09-06 来源:互联网 编辑:宝哥软件园 浏览:

本来打算把系列表情的最后一篇文章由浅入深的继续下去,但是最近,团队突然忙起来了,从来没有过!不过喜欢表情的朋友可以放心,写了:)在他们的工作中,我们发现Javascript的一些基本原理普遍存在于这里或那里,所以我们决定花一些时间整理这些基本知识,与大家分享。刚开始打算写一篇文章,后来写的时候发现越来越多,于是决定写一个系列。本系列的所有内容都与Javascript基础知识有关,但没有什么时髦的东西,但我相信这些基础知识会帮助你理解那些有趣的东西。

Javascript基础回顾(1)Javascript基础回顾(2)作用域Javascript基础回顾(3)面向对象是的,说到Javascript,我能想到的只有好玩和好玩!那么哪里好玩,为什么好玩?一起玩吧,玩完后让我们彻底了解一下Javascript。本文的内容包括:

基本类型对象和对象基本包装类型值类型和引用类型函数类型

基本类型Javascript有五种基本数据类型(也称为简单数据类型):Undefined、Null、Boolean、Number、String和一个复杂数据类型Object。

var undefinedVariablevar nullValue=nullvar cnblogs=new Object();var func=function(){ };type of(' string ');类型(100);type of(true);type of(undefinedVariable);type of(cn blogs);type of(UNDeclaredValue);type of(NullValue);Typeof (null)typeof (func)告诉我结果是什么。

乐趣一:声明但未赋值和未声明的变量是未定义的。乐趣二:只有声明并赋值为null,其值才会为null。乐趣三:typeof(Object)原来是一个函数。乐趣四:typeof(null)原来是一个对象

两种类型,null和undefined,只有一个值,即Null和Undefined。逻辑上,空表示指向空对象的指针,这就是typeof(空)返回对象的原因。而undefined是从null值派生的,所以.

乐趣5: null==undefined为真。

但是仔细想想,Null和Undefined毕竟是两种不同的类型。即使是父类和子类的关系,在C#中父类和子类也不能相等,是吗?实际上,null==undefined是一个硬性规定。ECMA要求他们在做平等测试时返回真,所以他们返回真。就像我们用C#重写了equlas方法。

至于为什么typeof(Object)返回函数,请看下面的Object和Object。

《对象与对象Javascript高级程序》一书说“函数是ECMAScript中的对象,而不是数据类型”。好像是翻译加的。既然typeof(Object)返回函数,为什么说函数不是数据类型呢?对象和功能是什么关系?

在我看来,Object其实就是一个函数,或者说更容易理解的是Object是一个函数的名字,官方名称是构造函数。

var p=新对象();p.name=' jessep.age=18函数Person(姓名、年龄){ this.name=namethis.age=年龄;}var p2=new Person('jesse ',18);在上面的代码中,如果我们把Object作为一个函数名,那么new Object()和new Person()的属性是相同的。通过新的运算符获得一个函数实例,其中的函数已经是一个类概念。所以这里的对象实际上是一个函数。这样我们就可以解释为什么类型(对象)是一个函数。

我们上面提到的复杂类型对象是什么?

对象是一个函数,但新的对象()是一个对象。在这种情况下,显然大写字母的对象是函数,而小写字母的对象是数据类型。所以我建议大家以后在谈类型的时候用小写。我们的基本类型是字符串、数字、布尔值。大写的字符串、数字、布尔值,它们只是一个函数。调用这些函数的结果是,是的,对象。

最后,我们找不到undefined和null这两个函数,所以这两个数据类型都是Undefined和Null(为什么type of(Null)get object已经说过了)

乐趣6:对象不是对象类型

基本包装类型我们说过,字符串、数字、布尔值都是基本类型。基本类型和复杂类型最大的区别是基本类型没有原型属性。这意味着您不能随意向基本类型添加方法或属性。

var str=' str//type of(str): String var strObj=new String(' str ');//type of(strobej): objectstrobej . name=' strobej ';strobj . alert=function(){ alert(this . name);};strobj . alert();//strobjstr . name=' str ';//错误.str . alert=function(){ alert(this);} str . alert();//这是错误的.没有什么是不可能的。同时我们也说了,带首字母大写的String是一个函数,所以新的String('str ')得到的是一个对象而不是字符串,所以这里要说清楚。我们的问题是,为什么基本类型字符串有一些初始方法?不是基本型吗?方法是如何添加的?

str=str . concat(' str 2 ');strObj=strObj . concat(' str 2 ');strobj . alert();//之后字符串就不再是对象了,所以这里没有预警方法。Str是string类型的变量,记住它不是一个对象。它不应该有方法,那么它的联系方法从何而来?这里,当后台调用str.contact时,它实际上秘密地完成了几个操作:

基于字符串创建字符串类型的实例,并在该实例上调用指定的方法来销毁该实例。想象这三个步骤如下:

var str2=新字符串(str);str=str 2 . concat(' str 2 ');str2=null我们可以将String、Number、Boolean称为封装类型,就像我们在C#中的自定义类型一样。但是不要忘记,我们真正的基本类型是字符串、数字、布尔。用字符串构造的对象属于对象类型。

乐趣7:字符串不是字符串值类型和引用类型。上面我们提到了五种基本类型:字符串、数字、布尔值、空值和未定义都是值类型。Javascript中只有一个引用类型,就是我们的复杂类型对象。那么有些人可能会想,像Date,Regex,Arrary这样的类型有哪些呢?其实这里的概念有点混乱。如果你很好地理解了上面的object和Object的区别,可能会更容易理解。我们可以把函数看作C#中的一个class关键字,我们可以用class来定义类。同样,我们可以使用函数在Javascript中定义类。

在C#中定义类:

命名空间console应用程序1 {类Person{公共字符串Name { get设置;} public int Age { get设置;} } class Program { static void Main(string[]args){ var p=new Person();控制台。write line(p . GetType());//控制台应用程序1。人员控制台。ReadLine();}}}用Javascript定义类:

函数Person(姓名、年龄){ this.name=namethis.age=年龄;} var p=new Peer();类型(p);//对象你发现区别了吗?如果我们使用函数在Javascript中定义类,它们的实例将总是对象,包括原始的日期、数组、正则表达式。

类型(新日期());//objecttypeof(新数组());//object typeof(new RegExp());//对象

乐趣八:都是对象。如果它们都是对象,我怎么知道这个对象是日期还是人的实例?借助实例。

末级乐趣:我用函数创建了一个Person类,然后用new得到了一个Person的实例,但它不是Person类型的。就像生了孩子给他吃穿,他却不取你的姓。做这件事是多么的无私和伟大!函数类型有两种:函数声明和函数表达式。函数声明具有优先级,可以在声明之前使用,但表达式不能。

say GuAnDent();//right sayHello();//erry var sayHello=函数(名称){ alert('Hello,' name);};函数say晚安(姓名){ alert('晚安,姓名');}此外,函数表达式还可以像对象一样随意添加属性。

var sayHello=函数(名称){ alert('Hello,' name);};sayHello.age=18sayhello . sayage=function(){ alert('我是' 18);} SayHello . SayAge();//我18了但是函数表达式到底是什么?您不能实例化它,但是您可以随意添加属性。它和实物有什么区别?如上所述,对象实际上是一个对象实例。

我们还有大写的函数。它和函数的关系会和string和String一样吗?(以下内容比较脑力,要小心!)

var sayHello=新函数(' name ',' alert '(我的名字是' name ');');说你好(“杰西”);对函数实例说你好;//truevar sayHello2=函数(名称){ alert('我的名字是' name ');};函数的sayHello2实例;//true我们调用上面的Function来构造一个函数。既不使用函数声明,也不使用函数表达式。不管怎么说,这是创建函数的第三种方式,虽然使用它的人肯定不多,因为它是一个字符串,无论是参数还是函数体。写的时候不让人崩溃吗?

看有什么猫腻?所谓的函数表达式实际上接收一个带有变量的函数对象。这个函数的对象是函数的一个实例。包括用函数声明编写的函数,也是函数的例子。

函数sayHello3(name){ alert('我的名字是' name ');}sayHello3函数实例;//真但是,等等,我们前面提到的字符串、日期、数组都是function类型的,Function也是吗?

我们前面说过,function的所有实例都是对象类型的,但是对于这个奇怪的函数,它的实例仍然是函数类型的,我们可以使用Function的实例来创建另一个实例。原来,Function创建的类不是类,而是函数的实例。

函数Person(name){ this . name=name;}函数的人员实例;//true让我们结合自执行函数来理解一下,这样可能会更好:

(function () { alert('某物. '));}());实际上,我们上面的函数(){}会返回一个函数的实例,所以我们当然可以直接执行。所以函数应该是Javascript中最特殊的类型。

乐趣10:所有函数都是函数的例子。乐趣11:功能本身也是一种功能

最后,让我们总结一下:

Javascript中有五种基本类型:字符串、数字、布尔值、null和undefined。另一个复杂类型,对象,实际上是函数的一个实例。除了系统中的函数构造函数,函数的所有其他实例都是对象类型的。日期、数组、正则表达式都是函数的类型,它们也是函数的实例。同样,它们的实例也是对象类型的。总结一下,好像不多吧?至于函数,javascript其实是一个非常强大的函数,范围和面向对象的一些知识也与它息息相关。让我们在下一篇文章中看看范围。感谢您的关注!

版权声明:Javascript基本回顾(一)类型是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。