javascript学习笔记(1)--javascript对象的理解

前端时间弄了个简单的网站源码,功能什么都不够丰富,所以这段时间准备学一下javascript,然后就把自己学习的体会分享一下,也留着自己以后查看

关于web这一块的话如果不会javascript会有很多障碍…所以还是要耐心学一下,对于以后web渗透也有帮助
废话不多说,下面进入正题

在JavaScript的世界里,一切都是对象,想学好javascript必须要理解对象

对象大家都耳熟能详,说不定很多人有对象,不像我哈哈哈
在生活中,我们的对象是由属性和行为构成的,比如:你的性别-男(这就是属性),你在吃鸡(这是行为)
仔细联想一下我们的现实世界,每个事物都可以算是一个对象,而这个事物有他自己的属性,名称就是最基本的属性,还有功能,当使用他功能的时候就变成了他的行为

而在javascrirpt的世界里,我们也可以定义一个对象,它也可以有很多属性,比如说javascript里的一个小老鼠,它可以由名字(属性),它也可以有函数(功能)–睡觉,当我们调用小老鼠.睡觉的时候这就是他的行为
在我们javaScript中,定义多个属性和函数就是一个javaScript对象

面向对象(object-oriented,oo)的语言有一个标志,那就是它们都有类的概念
但javaScript中是没有类的概念,只有函数的概念,我们一般会通过一个函数来模拟一个类。
在程序中我们通过类可以任意地创建多个属性和函数。

javaScript中的所有事物都是对象:字符串、数值、数组、函数,自定义对象
javaScript提供多个内建对象,比如String、Date 、Array等等,对象只是带有属性和方法的特殊数据类型
但是某些对象还是和其他对象不太一样
为了区分对象的类型,我们用typeof操作符获取对象的类型,它总是返回一 个字符串

数字型可以是一个对象

typeof 123;//"number"
typeof NaN; // "number"

字符串可以是一个对象

typeof 'str';//"string"

布尔型可以是一个对象

typeof true;//"boolean"

函数可以是一个对象

typeof Math.abs;//"function"

undefined也是一个对象

typeof undefined;//"undefined"

null,数组,对象,日期都是对象

typeof null;//"object"
typeof [];//"object"
typeof {};//"object"
typeof (new Date);//"object"

可见,number、string、boolean、function和undefined有别于其他类型
特别注意null的类型是object,Array的类型也是object

如果我们用typeof将无法区分出null、Array和通常意义上的object——{}

除了这些类型外,JavaScript还提供了包装对象
number、boolean和string都有包装对象
在JavaScript中,字符串也区分string类型和它的包装类型

包装对象用new创建

var n = new Number(123); // 生成了新的包装类型
n;//Number { 123 }
typeof n;//"object"
n===123;//false

var b = new Boolean(true);//生成了新的包装类型 
b;//Boolean { true }
typeof b;//"object"
b===true;//false

var s = new String('str');// 生成了新的包装类型
s;//String { "str" }
typeof s;//"object"
s==='str';//false

虽然包装对象看上去和原来的值一模一样,显示出来也是一模一样,但他们的类型已经变为object了
所以,包装对象和原始值用===比较会返回false

如果我们在使用Number、Boolean和String时,没有写new,
此时,Number()、Boolean和String()被当做普通函数,把任何类型的数据转换为number、boolean和string类型(注意不是其包装类型)

var n = Number('123');//相当于parseInt()或parseFloat() 
typeof n;//"number"
n===123;//true

var b = Boolean('true');
typeof b;//"boolean"
b==true;//true

额外注意,如果想转化为false,只能输入为空,只要是非空字符串,转化成bool都是true,只有空字符串才能转化为true

var b2 = Boolean('false');
b2;//true
var b2 = Boolean();
b2;//false
var b2 = Boolean('');
b2;//false
var b2 = Boolean("");
b2;//false
var s = String(123.45);
typeof s;//"string"
s;//"123.45"

刚才也提到了几个函数,也再说明一下

parseInt('123');//123
parseInt('123.5');//123
parseInt('a12');//NaN

parseFloat('123');//123
parseFloat('123.45');//123.45

String(123);//"123"
String(123.45);//"123.45"
String(NaN);//"NaN"
String();//""

var a=123
a.toString();//"123"
var a=123.5
a.toString();//"123.5"

parseInt()转化为整型
parseFloat()转化为浮点数
String()转换任意类型到string
直接调用某个对象的toString()转化为字符串

有时候需要判断是否为false,通常不必把任意类型转换为boolean再判断,因为可以直接写

if (myVar){...} 

最后有几点
null和undefined没有toString,会报错TypeError
如果直接用数字转化为TypeError,需要改一下,变成2个点

123.toString();//syntaxError
123..toString();//"123"注意是两个点
(123).toString();//"123"打括号也可以

判断Array要使用

Array.isArray([1,2,3]);//true
var a=[3,1,3]
Array.isArray(a);//true
Array.isArray(1);//false

判断某个全局变量是否存在用

typeof window.myVar === 'undefined'
var a=1
typeof window.a==='undefined';//false
typeof window.cacasd==='undefined';//true

函数内部判断某个变量是否存在用

typeof myVar === 'undefined' 

猜你喜欢

转载自blog.csdn.net/azraelxuemo/article/details/106868159