1.js中 对象、函数、数组是引用类型操作,数字、bool、null、undefined是基本类型
引用类型本体改变副本也改变,基本类型本体改变副本不改变。
2===
是比==
更严格的相等判断,不仅要求值相等也要求类型一样
同理!==与!=
3.关系操作符
> < >= <=
in
包含在一个表达式或者对象中,判断某属性是否是某个对象的
instanceof
是一个对象的实例,比如查找myDate是否是Date对象中的实例
4.位操作符
&
与 |
非 ^
或 ~
异或 <<
左移 >>
带符号右移 >>>
用0填充
5.一元操作符
delete
:删除一个属性,获取一个对象或者数组的索引将其删除或者变为undefined
void
:返回为定义
typeof
:但会代表数据类型的字符串
++
:自增一个数
--
:自减一个数
+
:将操作数转换位数字 如:x = +“43”
-
:操作数求负
~
:按位求反,0变成-1,-1变成0
!
:逻辑非
6.赋值操作符
*=
:左被右乘
/=
:左被右除
%=
:左被右取余
+=
:左被右加
-=
:左被右减
<<=
:位左移
>>=
:位右移
>>>=
:位无符号右移
&=
按位与
^=
:按位异或
|=
:按位或
7.三元条件
使用(?)创建一个紧凑的ifelse结构,如:
(name == "steve")?"Hello Steve":"hello Unknown";
8.在js中,使用函数时,不需要指定传递给函数的参数个数,而
且被传递的参数个数也不需要匹配函数定义中所定义的参数个数。
调用函数时,就向函数传递了一个名为arguments的数组对象。
arguments对象保存了传递给函数的参数,当不知道被传递参数的具体个数时,这种方法非常好用.
9.js支持面向对象开发
可以定义伪类来简化编程
比如定义一个星星类
var star = {}
function Star(a,b,c){
this.a = a;
this.b = b;
this.c = c;
this.f = function(){
//function
}
}
10.数组
1)显式构造方法 var star = new Array([num]);
2)隐式构造方法 var star = []
3)length属性 var num = star.length;
4)concat添加元素 将元素添加到数组末尾,也可以进行两个数组的连接
var myArray = new Array();
myArray[0] = "first";
myArray[1] = "second";
var newone = ["third"];
var newArray = myArray.concat("third");
//var new Array = myArray.concat(newone);
5)join连接,将数组转换位string
var star = ["Polaris","Deneb","Gemeni"];
var starString = star.join("*");
//return Polaris*Deneb*Gemeni
6)push()
和pop()
添加和删除,两个函数都是末尾操作
push()
返回新数组的长度
pop()
返回被删除的元素
7)shift()
和unshift()
添加和删除元素
unshift()
在数组开始的位置添加一个元素
shift()
在数组开始的位置删除一个元素,返回被删除的元素
8)slice()
返回数组的一部分
var star =["one","two","three","four"];
var cutStar = star.slice(1,3);
//return ["two","four"];
9)sort()为数组排序
var star = ["Polaris","Denes","Vega","Altair"];
return star.sort();
//["Altair","Denes","Polaris","Vega"]对字符按照字母排序
//注意,不要给数字用sort排序
10)数组对象的一些选择方法
reverse()
反转元素的顺序
map()
对每个数组项执行函数并返回一个数组
indexOf()
返回参数出现的第一处索引
lastIndexOf()
返回参数在数组中的最后一个索引值
every()
如果数组中的每一个元素都符合提供的测试函数,则对每个元素执行函数并返回true值
filter()
对每一个元素执行函数,并返回一个只包含函数返回true值的数组
some()
如果至少数组中有一个元素满足函数,组这行函数并返回true
splice()
在数组中插入或者删除一些元素。返回一个包含被删除项目的数组
11.浏览器层级:浏览器对象模型创建了一个树型层级,其中的很多层级为js程序员提供了方法
浏览器本身用一个命名为window的对象表示,是一个全局对象
表示浏览器目前正在打开的窗口,该对象的直接后代不需要加window前缀
window对象下有如下几个子对象:
1)document
2)frame
3)history
4)location
5)screen
6)navigator
7)self/window/parent
window对象的一些属性:
1)closed 窗口关闭时设置为true
2)defaultStatus 用来设置默认出现在浏览器状态栏中的文本
3)name 窗口第一处打开时设置窗口的名字
4)opener 对创建这个窗口的窗口的引用
5)parent 常常和帧一起使用,指创建特定窗口的窗口,或者该帧的上一级窗口
6)status 常常用来设置当访问者悬停在链接这样的元素上的时候状态栏中的文本
7)top 最高或最顶层的父窗口
window对象的一些方法:
1)addEventListener() 跨浏览器时间处理方法
2)attachEvent() addEventListener()的IE版本
3)blur() 把键盘输入的焦点从浏览器窗口移开
4)focus() 把键盘输入的焦点移动到浏览器窗口
5)detachEvent() removeEventListener()的IE版本
6)open() 打开一个窗口
7)print() 导致调用浏览器的打印函数,其行为就像有人淡季了浏览器的Print按钮
window对象移动和调整窗口大小的方法:
1)moveBy() 用来把窗口移动到一个相对的位置
2)movewTo() 用来把窗口移动到一个特定的位置
3)resizeBy() 用来按一相对量改变窗口大小
4)resizeTo() 用来把窗口大小改变到一个特定大小
window对象中与定时器有关的方法:
1)clearInterval()
2)cleatTimeout()
3)setInterval()
4)setTimeout()
12.screen 该对象提供获取访问者屏幕信息的方法
screen对象可用属性:
1)availHeight 返回屏幕可用高度和宽度,剪去了任务栏之类控件所使用的空间
2)availWidth
3)colorDepth
4)height 返回总的高度
5)width
13.navigator 该对象提供了几个属性,可以辅助检测访问者浏览器和环境的各种元素。
最常见用于检测用户使用的是哪一种浏览器
但一些浏览器存在用户代理切换浏览器如firefox,因此使用navigator变得毫无用处
如果正在使用的js在某些版本的浏览器上不工作
那么可以使用navigator检测浏览器,不过该方法不可靠
14.location 该对象使我们能够访问当前载入的URL(统一资源标识符)
包括任何有关查询的字符串、使用的协议以及其他相关组件的信息
一般情况下,我们使用location对象的assign()方法设置浏览器显示的URL
如:
location.assign("http://www.braingia.org")
调用assign()方法和href方法基本一样
location.href("http://www.braingia.org")
还可以改变location对象的其他属性
location.pathname = "blog";
location.search = "?name=Steve";
可以调用reload()方法重载页面
需要说明的是,reload()
方法是从缓存中重新加载页面,而非服务器
如果你想从服务器重新加载页面,可以使用reload(true)
15.history 该对象提供了通过访问者浏览器历史向前和向后移动的方法。
1).back() 向后移动一个页面
2).forword() 向前移动一个页面
3).go() 移动到参数指定的页面