面向对象的三大特征:封装、继承、多态。
面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象
创建一个对象然后给对象新建属性和方法。
第一种方法:
var box=new Object(); box.name='wang';//创建一个name属性并赋值 box.age=100;//创建一个age属性并赋值 box.run=function(){ return this.name+" "+this.age+'运用中'; } alert(box.run());//输出属性和方法的值 //输出结果为: //=>wang 100运行中
上面创建了一个对象,并且创建了其属性和方法,在run方法中的this,就是代表box对象本
身,这是js中创建对象最基本的方式,但如果需要创建多个对象就会产生大量的代码。
为了解决多个类似对象声明的问题我们可以使用一种叫做“工厂模式”的方法,这种方法就是
为了解决实例化对象产生大量重复的问题。
第二种方法:
function creatObject(name,age){ //集中实例化函数 var obj=new Object(); obj.name = name; obj.age = age; obj.run = function(){ return this.name+" "+this.age+"运用中..."; } return obj; }
调用以上方法构建实例对象:
var box1 = createObject('Lee', 100);//第一个实例 var box2 = createObject ('Jack',200);//第二个实例 alert(box1.run()); //输出结果为: //Lee 100运行中... alert(box2.run()); //输出结果为: //Jack 200运行中... 采用构造函数的方法来构建相应的对象:
function Box(name,age){//构造函数模式 this.name=name; this.age=age; this.run=function(){ return this.name+this.age+"运用中" }; }; var box1=new Box("Lee","100"); var box2=new Box("Jack","200"); alert(box1.run); //输出结果为: //=>Lee100运用中 alert(box1 instanceof Box); //输出结果为: //=>true //表示box1属于Box
使用了构造函数的方法,和使用工厂模式的方法他们不同之处如下: 1.构造函数方法没有显示的创建对象(new Object()); 2.直接将属性和方法赋值给 this 对象; 3.没有 renturn 语句。 构造函数的方法有一些规范: 1.函数名和实例化构造名相同且大写,(PS:非强制,但这么写有助于区分构造函数和 普通函数); 2.通过构造函数创建对象,必须使用 new 运算符。