赞
踩
ES6规范中有7种数据类型,分别是基本类型和引用类型两大类 基本类型(简单类型、原始类型):String、Number、Boolean、Null、Undefined、Symbol 引用类型(复杂类型):Object(对象、Function、Array) 1、typeof返回结果是该类型的字符串形式表示 (number、string、undefined、boolean、function、object) 注意 typeof对于原始类型来说,除了null都可以显示正确类型 typeof对于对象来说,除了函数都会显示object 2、instanceof是用来判断 A 是否为 B 的实例。 表达式为:A instanceof B,如果 A 是 B 的实例,则返回 true,否则返回 false。 在这里需要特别注意的是:instanceof 检测的是原型。
new
创建数组。var arr = new Array();
// 创建了一个空的数组var 数组名 = [ ];
// 创建了一个空的数组。数组名[索引]
”的形式来获得数组中的元素。这里的访问就是获取得到的意思。
如:
var arr = [1, red, true, 'xiaoming'];
console.log(arr[3]);
这样就可以得到最后一个数组元素 xiaoming 了。
注意:这里如果写成 console.log(arr[4]);, 索引是从0开始的,这里没有这个数组元素,所以返回的结果是undefined。
如果实参的个数多于形参的个数,会取到形参的个数,多出的不参与运算。
如果实参的个数少于形参的个数,多出的形参定义为undefined,输出结果为 NaN。
伪数组的特点:
注意:只有函数才有arguments,而且每个函数都内置好了这个arguments。
变量声明未赋值
函数参数没有传递
获取对象的不存在的属性
函数没有返回值
<a href = '#'> 删除</ a> 阻止a里面的href跳转,我们就不要用井号了,可以使用javascript: void(0); 或者 javascript:;
设备像素比(dpr) = 设备像素(分辨率)/设备独立像素(屏幕尺寸)
布局视窗:屏幕大小
视觉视窗:为了解决PC端网站在移动端显示不佳,布局视窗比设备屏幕宽度宽,一般为980
这行代码把视觉视窗大小设置成和布局视窗大小相等,这样我们在代码设置css像素时,设置的跟渲染出来效果也是一样。
缩写 | 全称 | 说明 |
---|---|---|
PX | Device Pixels | 设备像素,指设备的物理像素 |
PX | CSS Pixels | CSS像素,指CSS样式代码中使用的逻辑像素 |
DOT | Dot | 点,屏幕或打印纸上的点,等同物理像素 |
DP | Density independent Pixels | 设备无关像素(Android长度单位),为1/160英寸,等同于CSS逻辑像素 |
SP | Scale independent Pixels | 缩放无关像素(Android字体单位),等同于CSS逻辑像素,但文字尺寸可调(单独缩放) |
DPR | Device Pixel Ratio | 设备像素比,指CSS逻辑像素对于物理像素的倍数 |
DPPX | Dots Per Pixel | 等同于DPR |
PPI | Pixel Per Inch | 屏幕上每英寸(2.54厘米)的像素点个数 |
DPI | Dots Per Inch | 屏幕或纸上每英寸(2.54厘米)的点个数,标准密度:传统打印=72;Windows=96;Android=160;iOS=163。 |
DPIR | DPI Ratio | DPI缩放比例,指DPI对于Windows标准DPI的倍数=DPI/96,等同于DPR |
栈、堆都在运行内存中。
console.dir(newLi);
查找newLi
的属性。console.dir()可以显示一个对象所有的属性和方法。{}
进行包含的,如if{}
, for{}
等。// Java中
if () {
int num = 10;
}
// 外面是不能调用num的。
// js 中
if (3 < 5) {
var num = 10;
}
console.log(num); // 是可以正常输出的。
作用域链就是采用的“就近原则”。小技巧:先要确认是否被调用,然后站在输出的目标出发,一层一层的往外查找。
预解析:js引擎会把js里面所有的var(变量提升)还有function(函数提升)提升到当前作用域的最前面。如果函数内部也有var,需要在函数内部提升。
代码执行:按照代码书写的顺序,从上往下执行。
函数提升优先级高于变量提升,且不会被同名变量声明时覆盖,但是会被变量赋值后覆盖(CSDN)
var a = b = c = 9;
// 相当于 var a = 9; b = 9; c = 9; 只声明了一个a,其余两个没有声明,当全局变量看。
// 如果集体声明需要用逗号隔开。
// 集体声明:var a = 9, b = 9, c = 9;
// 相当于:var a = 9; var b = 9; var c =9;
利用字面量
来创建对象。
利用new Object
来创建对象。
利用构造函数
来创建对象。
字面量
来创建对象。对象字面量:就是花括号{}
里面包含了表达这个具体事物(对象)的属性和方法。
var obj = {};
// 创建了一个空的对象
var obj = {
uname: '张三丰',
age: 18,
sex: '男',
sayHi: function () {
console.log('hi~');
}
}
// 1. 里面的属性或者方法我们采用键值对的形式,键为属性名,值为属性值。
// 2. 多个属性或者方法,中间用逗号隔开,最后一个不用跟逗号。
// 3. 方法冒号后面跟的是一个匿名函数。
对象名.属性名
。这个小点(.),我们理解为“的”。console.log(obj.uname);
对象名[‘属性名’]
这里面的属性名需要加引号。console.log(obj['age']);
对象名.方法名
obj.sayHi();
这里面的小括号不能少,千万别忘记添加小括号。
变量和属性的相同点:
他们都是用来存储数据的。
var num = 10;
var obj = {
age: 18
}
console.log(obj.age);
// 不可以写成 console.log(age);
对象.属性
,或者使用中括号,对象[]。var num = 10;
var obj = {
age: 18,
fn: function () { // 方法
}
}
function fn () { // 函数
}
// 在里面的叫方法,在外面的叫函数。
函数名()
。对象.方法
。new Object
来创建对象。var obj = new Object(); // 创建了一个空的对象。
obj.uname = '张三丰'; //使用追加的方式来赋值。
obj.age = 18;
obj.sex = '男';
obj.sayHi = function () {
console.log('hi~')
}
console.log(boj.uname);
console.log(boj['sex']);
obj.sayHi();
// 我们是利用等号赋值的方法,添加对象的属性和方法。
// 每个属性和方法之间用分号结束。
// 调用跟第一种方法一模一样。
// new Object 的O要大写。
构造函数
来创建对象。为什么需要用构造函数来创建对象?
就是因为我们前面两种创建对象的方式,一次只能创建一个对象。里面很多的属性和方法是大量相同的,我们只能复制。因此我们可以利用函数的方法,重复这些相同的代码,我们就把这个函数称为构造函数。
又因为这个函数不一样,里面封装的不是普通代码,而是对象。
构造函数:构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与new运算符一起使用。就是把我们对象里面的一些相同的属性和方法抽象出来封装到函数里面。
需求:我们需要创建四大天王的对象。
相同的属性:名字、年龄、性别
相同的方法:唱歌
构造函数的语法格式:
function 构造函数名() {
this.属性 = 值;
this.方法 = function () {
}
}
new 构造函数名(); // 调用的时候一定要用new来进行调用。
function Star(uname, age, sex) { this.name = uname; this.age = age; this.sex = sex; this.sing = function (song) { //把’冰雨‘传给了song console.log(song); // 把song打印出来了 } } var ldh = new Star('刘德华', 18, '男'); //调用函数返回的是一个对象。 console.log(typeof ldh); // object console.log(ldh.name); // 刘德华 console.log(ldh.['age']); // 男 // 另外一种方法打印。 ldh.sing('冰雨'); var zxy = new Star('张学友', 19, '男'); console.log(zxy.name); console.log(zxy.age); // 1. 构造函数的名字首字母要大写。 // 2. 构造函数不需要return就可以返回结果。 // 3. 我们调用构造函数必须使用new。 // 4. 我们只要new 了一下Star() 调用函数就创建了一个对象,比如说ldh。 // 5. 我们的属性和方法前面必须添加 this。
function Star (uname, age, sex) {
this.name = uname;
this.age = age;
this.sex = sex;
this.sing = function (song) {
console.log(song);
}
}
var ldh = new Star('刘德华', 18, '男'); // 调用函数返回的是一个对象
// 返回结果:{name: '刘德华', age: 18, sex: '男',sing: f}
var obj = {
name: 'pink老师',
age: 18,
sex: '男'
}
console.log(obj.name);
console.log(obj.age);
console.log(obj.sex);
// 这样打印实在太麻烦
for … in 用于对数组和对象进行遍历。
for (var k in obj) {
console.log(k); // k 变量 输出,得到的是 属性名
console.log(obj[k]); // 得到的是里面的 属性值 必须要用中括号里面K。
}
注意:
我们使用 for…in 里面的变量,我们喜欢写 k 或者 key。
var date = new Date();
console.log(date.valueOf());
// 就是现在时间距离1970.1.1总的毫秒数。
var date = new Date();
console.log(date.getTime());
// 就是现在时间距离1970.1.1总的毫秒数。
console.log(Date.now());
// 就是现在时间距离1970.1.1总的毫秒数。
xxxxxxxxxx3 1var date = +new Date(); 2console.log(date);3// +new Date(); 返回的就是总的毫秒数。
注意: 这个毫秒数是永远不会重复的,江湖人称:“时间戳”。
var arr = [1, 2, 3];
console.log(arr[0]);
new Array()
//var arr = new Array(); // 创建了一个空数组
// var arr = new Array(2); // 这个 2 表示 数组的长度为 2,里面有2个空的元素。
var arr = new Array(2, 3); // 等价于 [2,3] 这样写表示,里面有2个数组元素,是2和3
console.log(arr);
instanceof
运算符,它可以用来检测是否为数组var arr = [];
console.log(arr.instanceof Array); // true
var obj = {};
console.log(arr.instanceof obj); // false
Array.isArray
(参数); (H5里面新增的方法,IE9以上才支持)var arr = [];
console.log(Array.isArray(arr)); // true
forEach();
本身就是一个局部作用域。对象的Boolean都是true。
null的Boolean为false。
document.onkeydown = function () {};
事件委托
就一定会有target。-nodeName用的时候要注意,元素节点的nodeName要与标签名相同,而且要大写。
-nodeName用的时候要注意,属性节点的nodeName要与属性名相同,而且要小写。
中括号表示包含
,小括号表示不包含
。
本身是父子,浏览器直接解析为兄弟元素了。
26个字母
+ 0~9
。12E23: 12x10的23次方。
三元运算符是有返回值的。
var b = 0;
b = a === 1?2:3;
b = 2;
迭代语句:遍历语句。
var obj = {};
obj.toString(); // "[object Object]"
// "[object Object]" object 指这是一个对象,Object指这是一个对象类型。
{}
。call()
和 apply()
方法。call、apply、bind是function原型对象上的方法。
只要是函数都会有这个三个方法。
call 的返回值就是被调用函数的返回值。
bind返回一个函数。
计时器的this指向window。
function Function() {}
这个function构造函数是被它自己实例化出来的。(function构造函数就是它自己的构造函数)。
__proto__
属性,它是对象所独有的。prototype
是函数所独有的。实例化:使用new创建一个对象函数的过程。
a.b
先从函数作用域中查找a是否能找到,如果不能找到会直接报错。如果找到了,那么再在a原型链里面查找b。
实例化对象
。构造函数+原型
的组合继承。所有的代码都要在JS上执行,但是浏览器可以帮忙处理一些事情。
worker.js
是操作不了DOM的,因为它没有DOM,它只是一个js文件。节流:在一段时间内只触发第一次。
防抖:在一段时间内只触发最后一次。
css
中的calc
是calculate
的缩写。var arr = [10]; // 创建一个下标为0,值为10的数组。
var arr = new Array(10); // 创建一个下标从0-10的空数组。
function fn(a, b){
}
fn(1, 2);
console.log(arguments.callee); // 当前对象
console.log(callee === fn) // true
它属于一个工具类,不用创建对象。它里面封装了数学类的属性和方法。我们可以直接使用。
如:Math.abs();
js原生:window.onscroll
jquery:$(window).scroll()
固定语法:元素.style.样式名 = “样式值(如果是数值如:px,需要带单位)”
固定语法:元素.style.样式名
通过style读取到的都是内联(行内)样式,无法读取样式表里的样式。
语法:元素.currentStyle.样式名
它可以读取当前元素正在显示的样式。
如果当前元素没有设置要获取的样式,则获取默认值。
这个currentStyle只有IE支持,其他的浏览器都不支持。
在其他浏览器中,我们可以使用 getComputedStyle()
这个方法来获取元素当前的样式,这个方法IE9以上的浏览器都支持,其他浏览器也都支持。
这个方法是window的方法可以直接使用。
getComputedStyle()
需要两个参数:
第一个:要获取样式的元素
第二个:可以传递一个伪元素(一般都传null)
该方法会返回一个对象,对象总封装了当前元素对应的样式。
如:
var obj = getComputedsStyle(box1, null);
console.log(obj.width);
// 或写成:
console.log(getComputedsStyle(box1, null).width);
obj 要获取样式的元素
name 要获取的样式名
function getStyle(obj, name) {
return window.getComputedStyle?getComputedStyle(obj, null)[name] : obj.currentStyle[name];
}
注意:通过currentStyle和getComputedStyle()读取到的样式都是只读的,不能修改。如果要修改必须使用style。
注意:for/while/do…while/if/switch 这个不是表达式,而是语句。
{}
。call()
和 apply()
方法。计时器的this指向window。
返回要用return,return后面的值是返回值,这个值将会返回到函数的调用处。
函数从哪里调用返回的结果就会返回到哪里去。
什么时候使用return,什么时候不用return完全看你的函数的功能:
存储在内存中代表特定信息的东西,本质上是010101…
内存条通电后产生的可储存数据的空间(临时的)。
可变化的量,由变量名和变量值组成
每个变量都定义一块小内存,变量名用来查找对应的内存,变量值就是内存中保存的数据。
funtion test() {}
console.log(test.name) // test
未完待续。。。。。。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。