您的位置:首页 > Web前端 > JavaScript

Javascript面向对象

2016-08-14 23:43 260 查看
JS的面向对象:
抽象
封装
继承
多重继承
多态
对象的组成:
犯法:函数、过程、动态的
属性:变量、状态、静态的

JS中可以给任何对象加上任何属性

给对象添加属性:
obj.a = 12;

给对象添加方法:
obj.show = function(){};

其实全局的变量和属性都是属于window

JS中的Object对象:
var obj = new Object();
obj.name='zhangSan';
obj.qq=123456;
obj.showName=function(){alert(this.name)};
obj.showQQ=function(){alert(this.qq)};

调用:
var obj = new Object();
obj.showName();
obj.showQQ();

注意与JAVA中的区别:JS中的类创建对象通过函数实现:

createPerson是类名称

function createPerson(name,qq){
var obj = new Object();
obj.nanme = name;
obj.qq = qq;
obj.showName=function(){};
obj.showQQ = function(){};

return obj;

}

createPerson.prototype.sum=function(){};//给类追加方法

var p1 = createPerson('zhangSan',123);//该函数成为构造函数

p1.showName();//不加括号则打印字符串

var p2 = createPerson('lisi',456);

可以通过new CreatePerson();

//系统会创建一个Object对象,并为其添加属性和方法,最后返回this对象

调用任何函数都可以加上new

function createPerson(name,qq){
this.nanme = name;
this.qq = qq;
this.showName=function(){};
this.showQQ = function(){};

}

var p1 = new createPerson('zhangsan',123);

注意给对象和给类加属性和方法的区别

给类加方法:

Array.prototype.sum=function(){};

给对象加上方法:

arr.sum = function(){};

一般写法:
用构造函数加上属性,用原型加上方法

用json来实现面向对象:

var jaon={
name:"abc",
qq:123456,
showName: function(){},
showQQ:
function(){}

};

JS里面的继承:继承父亲的属性和方法

JS里面的内置call(obj)方法,可以改变this

function A(){this.abc="abc";}

function B(){
A.call(this);//继承A的属性

}

B.prototype=A.prototype;//继承A的方法

注意JS中存在引用,数组、对象复制都是引用复制

B.prototype.fn=...此时改变了B也改变了A

其实原型就是一个函数数组,为了防止引用带来的问题,使用如下方法:

//实现方法的继承

for(var i in A.prototype){
B.prototype[i] = A.prototype[i];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: