js对象
this 对象
this 指向和调用方式有关 函数调用 对象方法 new表达式
- ==普通函数调用==,this为==全局对象或是undefined==
- ==作为对象的方法==,this为==那个对象==
- new 表达式,this为以该函数为原型的新创建的对象
- 使用 apply/call指定 this 这里this的指向根据函数的上下文
- 用bind绑定固定的this
- 事件处理函数中的this是当前的触发事件的DOM元素(event.currentTarget)
- IE attachEvent添加的事件处理函数中this为window
函数
1.函数声明和 函数表达式 区别
- 在解释器 加载数据时候 有一个函数声明提升 function declaration hoisting
- 函数声明在任何代码之前可用
- 函数表达式必须等到解析器执行到它所在的代码行
2.函数调用的三种方式:
- obj.myFunc();
- myFunc.call(obj,arg);
- myFunc.apply(obj,[arg1,arg2..]);
- call 连续参数 apply 接受 array arguments
- fun.call(thisArg[, arg1[, arg2[, …]]])
- fun.apply(thisArg, [argsArray])
- 参考文档
3.构造函数:
这个新创建的对象的 prototype 被指向到构造函数的 prototype。
- 通过 new 关键字方式调用的函数都被认为是构造函数。
- 在构造函数内部
- 也就是被调用的函数内
- this 指向新创建的对象 Object。
4.原型对象
- 原型对象:有 constructor 指针指向构造函数. 是不安全属性容易被重写!
- 实例:指向原型对象的内部指针 [proto ]. constructor 属性默认调用prototype对象的constructor.
- All objects inherit a constructor property from their prototype:
arguments对象
- 转换成数组
- var args = Array.prototype.silce.call(arguments);
- callee 属性 指向拥有arguments对象的函数
object 对象
1.Object.defineProperty() 参数 对象,属性,描述符(descriptor)
descriptor: configurable emumerable writable value 中一个或多个。
- configurable true 可以从对象属性删除 false 不能从对象属性删除 delete会报错
- emumerable
- writable true 可读写, flase 只读
- value 属性的值
- 访问器属性getter setter 使用 writable value