javascript基础

javascript基础
1.理解javascript基础知识
(1)理解数值
在javascript中,所有数值都是64位双精度,也就是说javascript中整数和浮点数之间并没有什么区别
两者都是数值.
typeof 1
//number
typeof 1.5
//number
(2)javascript中没有内置的十进制数据类型,但javascript为数字提供了两个方法:toPrecision()和foFixed()
这两个方法可以按照固定位数的小数来格式化数值
var num=13.433
num.toFixed(2);
//13.43
var num=1232.4343
num.toPrecision(5);
//1232.43
注意:如果使用一个超出64位范围的数值,或者得到一个超出64位范围的值,javascript将返回一个特殊数值
:-Infinity(负无穷大)或者Infinity(无穷大),除数为0将返回一个Infinity,其他特殊值还包括NaN,它表示
一个"非数值",当试图将一个无效字符串对象转换一个数值时,结果为NaN,在NaN值和数值之间执行一个操作
将返回一个NaN值,可以使用内置的isNaN()函数来检查一个变量是否是NaN值
10*1+100-NaN
//NaN
var x=NaN
isNaN(x)
true
(3)javascript支持8进制和十六进制,八进制字面量用一个0作为前缀,十六进制数值则以一个x作为前缀
(4)javascript内置的Math对象用于常见的数学运算,可以使用Math.round()方法或得两位数的精度
Math.round(.2+.3)/100;
(5)使用字符串:字符串是一个由0个或者多个16位unicode字符组成的系列,使用单引号或双引号将字符串括起
字符串也是不可变对象,因此字符串具有一些相应的属性和方法
"test.javascript".indexOf("s");
//2
"test.javascript".charAt(3);
//t
(6)布尔类型
Boolean类型表示true值和false值,在适当的上下文中,比如在一个if语句中,任何条件判断的值都将被转化为Boolean
值以判断"真"或"假"在条件判断中,空字符串,NaN值,null,undefined,数值0和关键字false都将被计算false其他的任何值
都将被计算为true
if(""){
Console.log("something happen");
}
else{
console.log("nothing happen");
}
//nothing happen
javascript支持的Boolean操作包括,逻辑与(&&)逻辑或(||)逻辑非(!)
function validate(){
var name_input="Jimmy";
var age_input;
return name_input&&age_input;
}
if(validate()){
console.log("pass");
}else{
console.log("fail");
}
//fail


NaN值表示一个非数值的值
typeof NaN
//number
(6)类型之间的比较
javascript具有等于(==)和等同(===)操作符,==操作符是危险的,因为他在执行比较前,强制执行类型
转换
1=="1"
//true
如果左操作数和右操作数真正完全相同===才会返回true
1==="1"
//true
(7)日期简介
javascript内置了Date对象,可以使用new操作符和Date()构造函数来创建Date对象,Date对象用于表示日期和
时间,不带任何参数创建一个新的Date对象,获得的是一个表示当前日期和时间的Date对象
var thisMoment=new Date();
console.log(thisMoment);
//thisMoment.getFullYear();
//2014
(8)其他类型
声明一个变量未对其赋值,或者访问一个不存在的对象属性,结果将会产生一个undefined类型
null是javascript的一个内置对象,它表示没有值,在执行比较运算时,undefined和null两者被转换false
Number
String
Boolean
Object
Function
Array
Date
Regex
Null
Undefined
在使用try...catch语句中,某些附加的内置的error类型非常有用,通常在throw语句中新建error对象
(9)变量
可以通过赋值操作(隐式声明)或者通过var关键字(显示声明)来为声明一个变量,可以使用var关键字来
声明变量,则该变量是持久的,且不能删除该变量,对于一个变量可以多次进行声明,不必担心产生任何
错误,因为初始化的变量会被赋值为undefined
i=0;//隐式声明
var i=0;//显示声明
var x;//undefined
作用域是指变量和对象的可见范围,全局变量global在应用程序的任何地方都是可见的,而局部变量则
在声明该变量的函数内可见
function where(){
var v1="local scope";
v2="globe scope";
}
where();
console.log(v1);//v1 is not undefined
console.lon();//globe scope


2.函数和对象
对象是属性的集合,每一个属性是一个名称和值,属性可以包含除undefined之外的任何类型,在创建对象
之后,可以对属性进行赋值,数组,函数和正则表达式都是对象,数值(number)字符串(string)和布尔值都是
对象(boolean)但他们是不可变的对象,可以采用两种方法来实例化一个对象
(1)使用new关键字来实例化一个对象
var myObject=new Object();
new关键字将调用构造函数(构造器),构造器将初始化新创建的对象,this关键字用于引用当前对象,不能对它进行
赋值,但可以将this关键字赋值给另外一个变量
//构造函数
function Zombie(name){
this.name=name;
}
var smallZombie=new Zombie("Google");
(2)另外一种实例化变量的方法是使用对象字面量,这种方式创建的字面量更像其他语言中的散列或者关联数组
var myObject={}
var objectWithProperty={
"property1" : "a string value",
"property2" : 12
}
两种方法访问属性
objectWithProperty.property1
//a string value
objectWithProperty['property']
//a string value
var species{
'mamal'{
'name':'string'
}
}
console.log(species.namal.name);
//string
javascript是一种动态语言,因此更新一个属性只需要重新对属性赋值即可,需要从对象中移除一个属性
使用delete操作符,要遍历对象的所有属性使用for...in循环
var obj={
'property':1,
'property':2
}
var i;
for(i in obj){
console.log(i);
}
//property1
//property2
javascript使用原型继承(prototypal inheritance),对象直接从其他对象继承,从而创建新的对象,简而言之
对象继承了另外一个对象的属性,javascript中没有类(原型就是其他对象的模型)


3.javascript的作用域,闭包和执行上下文
一个内置对象Object.property位于继承层次的顶端,所有其他对象都继承了该对象,在继承树中的每个对象

都可以通过prototype属性链连接起来

//对象和函数的关系
var fn=function(){};
console.log(fn instanceof Object);//true
对象是一种函数
function fn(){
this.name="zhangsan",
this.age=10;
}
var fn=new fn();
对象可以通过函数来创建
对象都是通过函数来创建的
var obj={a:10,b:10};
var arr=[2,3,'x'];
以上代码的本质是:
var obj=new Object();
obj.a=10;
obj.b=10;
var arr=new Array();
arr[0]=5;
arr[2]='x';
...
console.log(typeof(Object));//function
console.log(typeof(Array));//function
//当创建新的对象时,请注意如何初始化对象
//obj1和obj2都是引用同一个对象
var obj1=obj2={};
//obj1和obj2不是引用同一个对象
var obj1={};
var obj2={};


//对象是自知的(self aware),也就是说对象知道自己的属性。要检查某个属性是否存在。可以使用hasOwnProperty()方法,
该方法将返回一个Boolean值



获取属性都是通过delegation实现的,当试图获取一个不存在的属性时,javascriptIan将从原型对象查找该属性
,如果依然没有找到该属性,则javascript将沿着原型树(prototype tree)向上查找,直到找到原始的Object.prototype
之后,如果依然没有找到该属性,则javascript解析器将放弃查找并返回一个undefined
funcion Monster(type){
this.type=type;
}
Monster.prototype.getType=function(){
return this.type;
}
function Zombie(name){
this.name=name;
}
Zombie.prototype=new Monster();
Zombie.prototype.eatPeople=function(){
conlose.log("test");
}
引用(referrence)是一个指向对象实例位置的指针,Object是引用类型,由于所有的对象都是通过引用传递的,修改与一个

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值