一,什么是面向对象
前言:基本上所有的高级编程语言都是面向对象编程的,其实面向对象就是一种思想,详细解释点击这里
常见的几种思想
- 面向过程:(没有类,没有对象,在C语言中有用)
- 面向对象(在Java、C++、JS中都有使用)
- 面向切面(spring IOC AOP)
二,JS面向对象的几种特征以及类和对象
1,面向对象的几种特征
- 抽象:把具体的问题抽象化;
- 封装:把属性和方法封装在类中,如
var obj = {
name:"wc",
age:100,
say:function(){
log("say...");
}
}
- 继承:一个类可以继承另一个类,在JS中,类是通过函数表达式来定义;
- 多态:暂时不多说;
2,面向对象中的类和对象
- 类: JS中的类的本质还是一个函数,是抽象的,而不是具体的;如下
function Person(){
// 是一个类的话,首字母会大写
}
new Person(); // 此时Persion是一个类
Person(); // 此时Person就是一个函数
- 对象:
var obj = {name:"wc"};
此时obj就表示一个对象,在JS中一个{ }就是一个对象;
三,JS中默认存在的类(常见的)
1,Number类
var n = new Number("100");
console.log(n); // Number {100}
console.log(typeof n); // object(对象)
// instanceof 是一个运算符 判断一个对象是否属性某个类
console.log(n instanceof Number); // true(表示n属于Number类)
2,String类
var str = new String("hello oop");
console.log(str) // {"hello oop"}
console.log(typeof str) // object(对象)
console.log(str instanceof String); // true(表示str属于String类)
console.log(str instanceof Number); // false(表示str不属于String类)
3,Boolean构造器(JS中构造器也叫类)
var f = new Boolean(false);
console.log(f) // {false}
console.log(typeof f) // object
console.log(f instanceof Boolean) // true
4,Object构造器(存在语法糖)
第一种写法
var obj = new Object(); // new一个构造器得到一个对象
obj.name = "wc";
obj.age = 110;
console.log(obj); // {name: "wc", age: 110}
第二中写法:是第一种写法的语法糖(就相当于上面写法的简写,方便了程序员)
var obj2 = {
// 字面量形式声明一个对象
name:"xiaoqiang",
age:100
}
5,Data类
var d = new Date();
console.log(d);
console.log(d.getFullYear()) //只获取年份,属于对象中默认的方法;
6,Math类(不需要new)
- 属于单体内置类,常驻内存不需要new
var r = Math.random();
console.log(r); //输出一个随机数
7,Array类
var arr = new Array("a","b","c");
console.log(arr); // 输出["a", "b", "c"]
// 是上面的形式的语法糖
var arr2 = ["d","e","f"]; // 字面量创建数组(对象)
console.log(arr2); // ["d", "e", "f"]
四,JS中的对象及函数
1,证明:JS中的一切数据都是对象
JS中的HTML元素标签、数组、函数、基本数据类型、console等等 均是对象
数组是对象证明:
var arr = ["a","b","c"]; // 也是Array这个类
console.log(arr); // ["a", "b", "c"]
console.dir(arr)