JavaScript常见基础知识
JavaScript常见基础知识
1、js立即执行函数
<script>
(function(a,b){
alert()
})(10,30)
</script>
1、给这个匿名函数传递参数a=10,b=30
1.1 注意问题1
//这样会报错
var a=10
(function(a,b){
alert()
})(10,30)
解决办法:
//在括号前面加分号,让编译器理解
var a=10
;(function(a,b){
alert()
})(10,30)
1.2 注意问题2
// 这样也会报错
var a = 10
[1,2].forEach(function() {
alert()
})
解决办法:
// 在中括号前面加分号,让编译器理解
var a = 10
;[1,2].forEach(function() {
alert()
})
2、js中的this
// 例如如下代码
function aa(){
console.log(this);
}
aa();
var obj1={
getAa:aa()
}
var obj2={
getAa:aa()
}
obj1.getAa();
obj2.getAa();
1、谁用的就执行谁
2、aa()中的this指向window
2、obj1.getAa();中的this指向obj1
3、obj2.getAa();中的this指向obj2
3、js中构造函数的执行流程
1、只要在程序执行中见到new关键字,立刻创建一个新的对象
2、将新建的对象设置为函数中的this,在构造函数中可以使用this来引用新建的对象
3、逐行执行函数中的代码
4、将新建的对象作为返回值返回
代码示例:
function Person(name,age){
this.name=name;
this.age=age;
this.eat= function () {
alert("我要吃饭")
}
}
var hc = new Person('hc',33);
console.log(hc)
4、instanceof关键字
检查某个对象是否是某个类的实例
5、原型
// 1、抽象类访问原型使用 类.prototype
// 2、具体实例化对象使用原型 实例化对象.__proto__
function Person() {
this.name = name
}
var hc = new Person();
console.log(Person.prototype)
console.log(hc.__proto__)
6、数组中常用的方法
以下四个方法都会 改变数组 原有的值
方法 | 说明 |
---|---|
push | 向数组的最后位置插入值(可以数单个值,也可以是个数组) |
pop | 弹出数组中的最后一个值,而且有返回值 |
unshift | 向数组的头部插入数据(可以是单个,可以是数组) |
shift | 弹出数组中的第一个值 |
splice(index,howmany,item1, ....., itemX) | index为起始索引,howmany为删除多少项,item1, ....., itemX为往index位置的插入项 |
join() | 将数组按照我指定字符串连接为一个字符串 |
sort(function(a,b){return a-b}) | 默认按照unicode编码进行排序 |
以下方法 不会改变数组 的值
方法 | 说明 |
---|---|
forEach(function(value,index,currentArr) { }) | 循环遍历数组中的每一个元素 |
slice(start,end) | 从数组中的start开始截取,到end结束,若不传,则默认到数组最后 |
concat(arr,......) | 连接两个或者多个数组 |
reverse() | 数组发生反转 |
7、如何修改函数的this对象
1、call()和apply()都可以修改方法中的this对象
2、call使用方式call(obj,item1,....,itemx)
3、apple使用方式apple(obj,[item1,...,itemx])
8、arguments
1、保存方法中的所有参数,为一个数组
2、arguments.callee 为当前执行函数的对象