string 字符串
number 数字
boolean 布尔值
null
undefined
objecrt
转换字符串 toString();
String ();
转换为数字 Number();
parseInt();专门对付字符串的,如果不是字符串,则必须先转换为字符串在使用parseInt;或者parseFloat;
parseFloat();
转换为boolean();
boolean();
判断一个变量是不是对象非常简单。值类型的判断用typeof,引用类型的判断用 instanceof.
创建对象 var obj =new Obj(){
}
var 函数名=function(){} /匿名函数/
function 函数名(){} /函数*/
(function ( ){ })(); /立即执行函数/
创建一个构造函数,专门用来创建Person对象的
构造函数就是一个普通的函数,创建方式和普通的函数没有区别
不同的是构造函数习惯首字母大写
构造函数和普通函数的区别就是调用方式不同
普通函数直接调用,而构造函数需要new 关键字调用
function Person(name , age , gender){
this.name =name;
this.age=age;
this.gender=gender;
this.sayName=function(){
console.log("name"+this.name)
}
}
var per =new Person("李娜",23 ,"女");
console.log(per);
property 原型对象
原型对象也是对象,所以他也有原型,当我们使用一个对象的属性或者方法时,先在自身中寻找,自身如果有,则直接使用。如果没有则在原型的对象中寻找,如果原型的对象中有则可以直接使用。如果没有则去原型中的原型中去寻找,直到找到Object对象中的原型。但是Object对象中的原型没有原型,如果在Object 的原型中没有找到,则返回undefined。
访问一个对象的属性时,先在基本属性中查找,如果没有,再沿着__proto__这条链向上找,这就是原型链。
cally() 和 apply() 这两个都是方法函数对象的方法,需要通过函数对象来调用;
call ()方法可以将实参在对象之后依次传递;
apply() 方法可以将实参封装到一个数组中在对象之后传递
使用call();和apply() 调用时this 就是指向那个对象;
语法:元素名.style.样式名=样式值
例如:box1.style.width=“200px”; 使用style只能读取到内联样式;
用来读取当前正在显示的样式 元素.currentStyle.样式名=样式值
如果当前元素没有设置该样式,则获取当前的样式值。这种方法只支持IE浏览器。
在其他的浏览器可以使用 getComputedStyle(获取样式的元素 ,可以传递一个为元素,一般都传null ) 来获取当前的样式。(只读不能设置)
该方法不支持IE8以下的浏览器。
兼容浏览器
event =window .event || event
变量提升
var a;
console.log(a); // undefined
a = "a";
var foo = () => {
var a; // 全局变量会被局部作用域中的同名变量覆盖
console.log(a); // undefined
a = "a1";
}
foo();
函数提升
console.log(foo1); // [Function: foo1]
foo1(); // foo1
console.log(foo2); // undefined
foo2(); // TypeError: foo2 is not a function
function foo1 () {
console.log("foo1");
};
var foo2 = function () {
console.log("foo2");
};
闭包到底是什么?
理解一:闭包是嵌套的内部函数 注意:闭包存在于内部的嵌套函数中
理解二:包含被引用的对象(函数)函数的对象。
产生闭包的条件:
**.函数嵌套
**:内部函数引用外部函数的数据;
定时器真的是定时执行的吗啊?
不是
代码的分类:分为初始化代码和引擎代码
es6箭头函数
如果只有一个参数,()可以省。
如果只有一个return { }可以省。
结构赋值
1.左右两边必须一样
2.右边必须是个东西
3.声明和赋值不能分开,必须在一起
let [a, b,c]=[1,2,3];
let {a, b, c}={a:1,b:2,c:3};