- var myDate = new Date();
- myDate.getYear(); // 获取当前年份(2 位)
- myDate.getFullYear(); // 获取完整的年份(4 位, 1970-????)
- myDate.getMonth(); // 获取当前月份(0-11,0 代表 1 月)
- myDate.getDate(); // 获取当前日(1-31)
- myDate.getDay(); // 获取当前星期 X(0-6,0 代表星期天)
- myDate.getTime(); // 获取当前时间(从 1970.1.1 开始的毫秒数)
- myDate.getHours(); // 获取当前小时数(0-23)
- myDate.getMinutes(); // 获取当前分钟数(0-59)
- myDate.getSeconds(); // 获取当前秒数(0-59)
- myDate.getMilliseconds(); // 获取当前毫秒数(0-999)
- myDate.toLocaleDateString(); // 获取当前日期(数字格式)
- myDate.toDateString(); // 获取当前日期(英文格式)
- var mytime=myDate.toLocaleTimeString(); // 获取当前时间
- myDate.toTimeString(); // 获取当前时间
- myDate.toLocaleString(); // 获取日期与时间
- // 原始类型的引用类型 Boolean 类 Number 类 String 类
.valueof() 查看该引用类型的值
.toFixed() 返回带几位小数的数值
.toExponential() 返回用科学计数法表示的数值
位运算:
按位取反 NOT(~): 转换成 32 位二进制, 按位取反
按位与 AND(&): 转换成 32 位二进制, 与运算
按位或 OR(|): 转换成 32 位二进制, 或运算
按位异或 XOR(^):1^1=0 1^0=1 0^0=0
Array 类
.push 用于在 Array 尾部插入一个或多个项
.pop 用于删除 Array 最后一个数组项
.shift 用于删除 Array 的第一个项
.unshift 用于把一个项放在数组的第一个位置, 然后把余下的项向下移动一个位置
.parseInt()转整数 .parseFloat()转小数 .number()转数字 .toString()转成字符串
new 做的 4 件事: 开辟空间, this 指针赋值给新的对象名, 设置属性和方法值, 返回对象
new 的对象的属性和方法存放在堆空间上, 对象名实质上是变量, 存放在栈空间上, 并指向那个堆空间
JS 中调用属性可以 -- 对象名["属性名"], 来调用
var key in JSON 中的 key 表示为一个量, 一般为 string 类型的, 用来存放属性名
遍历对象可以用 for-in 循环, 因为对象是无序属性的集合
传参问题: 实参的值复制一份副本给形参, 形参获取值之后进行运算
传值可能无法修改实参的值, 传指针肯定能修改是实参的值
JavaScript 中可以在某个元素前使用 '+' 号, 这个操作是将该元素转换秤 Number 类型
slice 有两种传参方式, 一种是 slice(start,end); 一种是 slice(start)取 start-->end 下标之间的数据 (包含 start 位置数据, 不包含 end 位置数据)
splice(起始位置 index, 删除元素个数, 插入项)
filter 遍历每一个元素, 将元素放入回调函数执行, 符合函数的将组成新数组返回
push() 将元素追加到数组末尾
pop() 将数组末尾的元素删除
unshift() 将元素追加到数组首位
shift() 将数组首个元素的值删除
bind(a) 将 this 换为 a
if()条件句可以检测某属性的存在, 返回 undefined,null,NaN 则不执行
基本包装类型: 本身是基本类型, 但是在执行代码过程中, 如果这种类型的变量调用性或是方法, 那么这种类型就不再是基本类型了, 而是基本包装类型, 这个变量也不是普通的变量了, 而是基本包装类型对象
如果是一个对象 &&true, 那么结果是 true;
如果是一个 true&& 对象, 那么结果是对象;
- var num1=Number("10");// 类型转换
- var num2=new Number("10");// 基本包装类型
- var A=function (){
- var x='a'; // 私有属性或方法: 只能在对象内部进行访问修改, 外部不可访问
- this.z='c'; // 通过 this 指针实例属性或方法: 任何地方均可访问
- };
- A.y='b'; // 类属性 (或方法): 类名. 属性名(或方法名) 来访问
- A.prototype.m='d'; // 原型属性 (或方法): 存在于原型链上, 原型方法和属性是共享的, 对象定义后, 只能对象名. 属性名(或方法名) 来访问, 当用对象名. 属性名访问, 浏览器默认先访问实例属性, 没有则会从原型链上查找
- var a=new A();
- a.n=function(){
实例方法
}
实例上的变量的优先级要高于定义在 "this" 上的, 而定义在 "this" 上的又高于 prototype 定义的变量
通过原型来添加方法, 解决数据共享, 节省内存空间
实例对象中有个__proto__属性, 供浏览器使用, 不是标准属性,
构造函数中有个 prototype 属性, 供开发者使用, 是标准属性
function 原型产生的都有 prototype 属性指向 prototype 对象, 每个对象都有__proto__属性
- var a1=function (){
- };
- var a2=new b();//b 是 a 的构造方法;
则 a1 有 prototype 属性, a2 没有, 但都有__proto__指向 prototype 对象
Object.getPrototypeOf(对象名)返回[[prototype]]==>__proto__的值
JS 中所有函数实际上都是 Function 的构造函数创建出来的实例对象
构造函数, 实例对象和原型对象之间的关系: 通过 new 操作符调用构造函数, 构造函数先创建原型对象, 然后一同创建实例对象, 因此调用原型方法必须先创建实例对象.
构造函数中的 this 是实例对象
闭包的本质就是在一个函数内部创建另一个函数
闭包有 3 个特性:
1函数嵌套函数
2函数内部可以引用函数外部的参数和变量
3参数和变量不会随函数体的结束而结束
作用: 缓存数据, 延长作用域链 ===>也是闭包的缺点造成内存不能及时释放空间
- // 自调用函数 -- 一次性, 只能用一次
- (function(){
- });
- // 将局部变量作为属性给 Windows 就可以将局部变量装换成全局变量
- var f=function(){
- };// 方法 (构造函数外称为函数表达式), 公有的 ==> 外部可以访问
- function f(){
- };// 函数 (构造函数外称为函数声明), 私有的 ==> 外部不可访问
函数声明必须有名字, 匿名函数属于函数表达式; 函数声明前后可调用函数, 函数表达式必须在赋值后才可调用
通过原型对象可以实现继承 ==>缺点: 属性可能重复
通过父级构造函数. call 方法也可以实现继承 ==>缺点: 方法不可以继承
因此使用组合继承方式来实现继承, 即属性在构造函数中调用父级构造初始化次参数, 改变原型对象指向来继承方法
拷贝继承就是改变对象的指向, 拷贝某一对象的属性
"use strict";// 严格模式, 严格模式下代码必须规范, Windows 对象的方法必须 Windows. 方法名
- var obj={
- 0:21,
- 1:22,
- 2:23
- };
- console.log(obj[0]);// 或者 obj["0"]都可以输出 21
- var age=12;
- var people={
- age:24,
- sayAge:function () {
- return age; // 返回的是变量 age 的值, 浏览器先从 sayAge 函数局部作用域中查找, 如果有则返回; 否则从外部全局作用域查找, 一直未 找到则返回 undefined
- },
- sayAge1:function () {
- return this.age;// 返回 this 中的 age 属性, 浏览器会查找 this 指向的对象中的属性, 有则返回, 无则返回 undefined
- }
- };
来源: http://www.bubuko.com/infodetail-2899195.html