引用文字
1、delete
delete不可以删除变量 只可以删除变量上的属性
2、有名函数被赋值为一个变量
再访问这个 名(有名函数的名)就会报错
var f=function g() {
return 1
}
console(g())
会报错 g没有被定义
3、函数的this指向谁 决定于是谁在调用它
var foo={
baz:1,
bar:function () {
return this.baz;
}
};
(function () {
console.log(typeof arguments[0]()) //undefined
})(foo.bar)
4、分组选择符() 值是括号里边的最后一个
var a=(1,3,4);
console.log(a) //4
5、new一个构造函数 会执行的操作
一个没有返回值的函数在new进行构造调用以后 会返回一个如下所说的对象
普通调用这个函数 则没有返回值
var foo=function () {
console.log(11)
}
var foo1=new foo();
var foo2=foo();
console.log(foo1,foo2) //foo undefined
在使用new 对构造函数进行调用的时候 会发生如下几件事情
(1)首先会生成一个空对象
(2)将新建对象的this指针指到新建的对象上
(3)如果构造函数没有返回值 让这个对象的原型指向构造函数的prototype
如果真个个对象有返回值 让这个对象指向了返回的对象
所以尽量不要在构造函数中返回什么东西
6、函数的形参和是实参的个数
函数.length 可以得到函数的形参的个数
函数中arguments.length可以得到函数实际参数的个数
7、变量的查找是就近原则
去寻找var 定义的变量 当就近没有找到的话 就会查找外层
同时变量声明的过程是 var a=2; 1、变量声明提前 2、再赋值
var a=10;
function foo() {
console.log(a);
var a=20;
}
foo(); //undefined
以上代码和下面的代码是等价的
var a=10;
function foo() {
var a;
console.log(a);
a=20;
}
foo(); //undefined
8、js中参数传递
普通类型是值传递 引用类型是地址传递
普通类型 相当于将实参赋值给了形参 实参没有任何的改变
var a=10;
function foo(a) {
a+=10;
}
foo(a);
console.log(a) //10
引用类型 将实参的引用类型的地址 赋值给形参
var a=[1,3,4,5,6];
function foo(a) {
a.push(1,3)
}
foo(a);
console.log(a) //[1, 3, 4, 5, 6, 1, 3]
9 利用正则表达式的子项 和字符串的replace 函数的第二个参数为函数的功能
实现将中画线的字符串 转化为驼峰式命名的字符串
function aa(str) {
var partten=/-(\w)/g;
return str.replace(partten,function ($0,$1) {
console.log($0,$1)
//会输出 -c c 和-s s
return $1.toUpperCase()
})
}
console.log(aa("background-color-style"))
10 用递归来代替循环
不使用循环 创建数组
function test(n) {
var arr=[];
return (function () {
arr.unshift(n);
n--;
if(n!=0){
arguments.callee()
}
return arr;
})()
}
console.log(test(5))
用str的replace 来实现循环
function test(n) {
var arr=[];
arr.length=n+1;
var str="";
str=arr.join("a");
var arr2=[];
str.replace(/a/g,function () {
arr2.unshift(n--)
})
return arr2;
}
console.log(test(5)) //[1,2,3,4,5]
11 利用三目运算 switch 来代替if else
12 原型链 对象 构造函数的关系
原型:构造函数在创建的过程中,系统自动创建出来与构造函数相关联的一个空的对象。可以由构造函数.prototype来访问到
每个对象的__proto__属性指向自身构造函数的prototype;
constructor属性是原型对象的属性,指向这个原型对象所对应的构造函数。
每一个原型对象都有consrtructor属性
原型链:每一个对象都有自己的原型对象,原型对象本身也是对象,原型对象也有自己的原型对象,这样就形成了一个链式结构,叫做原型链。
例如:p对象----->Person.prototype------->Object.prototype--------->null 构成原型链
13、DOM事件的绑定机制。
element.onclick
W3C下使用element.addEveneListener('click',function(),false[在冒泡阶段执行函数])
IE下 使用element.attachEvent('click',function(){}) 这个函数中的this指向的是window而不是element
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。