Fork me on GitHub

JavaScript面向对象精要总结一


全书从6个方面总结,分别是原始对象、引用对象、函数、理解对象、构造函数和原型对象、继承、对象模式。

面向对象的几个特性:封装、继承、多态。

原始类型保持为简单的数据值

引用类型保存为对象

javaScript有五种原始类型

  1. boolean
  2. number
  3. string
  4. null
  5. undefined

鉴别原始类型

console.log(typeof “junhey”)

创建对象

var object=new Object();

内建类型实例化

Array 数组类型
Date 日期和时间类型
Error 运行期错误类型
Function 函数类型
Object 通用对象类型
RegExp 正则表达式类型

可以new来实例化每一个内建引用类型,如下:

1
2
3
4
5
6
var item=new Array();
var now=new Date();
var error=new Error('Something bad happened');
var func=new Function("console.log('Hi');");
var object=new Object();
var re=new RegExp('\\d+');

鉴别引用类型

console.log(items instanceof Array);

函数两种字面形式

  • 函数声明
1
2
3
function add(num1,num2){
return num1+num2;
}
  • 函数表达式
1
2
3
var add=function(num1,num2){
return num1+num2;
}

参数

1
2
3
4
5
6
7
8
9
10
function sum(){
var result=0,
i=0,
len=arguments.length;
while(i<len){
result+=arguments[i];
i++;
}
return result;
}

this对象

全局作用域中,this代表全局对象。
当一个函数作为对象的方法被调用时,默认this的值等于那个对象。

改变this

1
2
3
4
5
6
7
8
9
10
var name="junhey";
function sayNameForAll(label){
console.log(label+":"+this.name);
}
var person1={
name:"junhey"
}

sayNameForAll.call(peoson1,"person1");//output "person1:junhey"
sayNameForAll.apply(person1,["person1"]);//output "person1:junhey"
  • call()

call()的第一个参数指定了函数执行时this的值,其后的所有参数都是需要被传入函数的参数。

  • apply()

只接受两个参数:this的值和一个数组或者类似数组的对象