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];
}
转载请注明原文地址: https://ju.6miu.com/read-1300185.html