JavaScript面向对象学习笔记

面向对象:
变量和属性一样的。
属性:属于一个对象
变量:属于任何一个人
函数:
方法:属于一个对象
难点:
this:当前的方法属于谁,this就是谁的
例子
window.show = function(){
alert(this);
}
//this是window
function show(){
alert(this);
}
Object:用来实现对象
var obj = new Object();
例子:
var obj = new Object();
obj.name = "zhaobw";
obj.age = "12";
obj.showName = function(){
alert("我的名字:"+this.name);
}
obj.age = function(){
alert("我的年龄:"+this.age);
}
/*
*缺点:如果多个对象就会很麻烦
*/
改进:
模式:工厂模式
缺点:
(1)没有new
(2)函数不能共用
a.showname != b.shwoname
function createPerson(name,age)//构造函数
{
//原料
var obj = new Object();
//加工
obj.name = name;
obj.age = age;
obj.showName = function(){
alert("我的名字:"+this.name);
};
obj.age = function(){
alert("我的年龄:"+this.age);
};
//出厂
return obj;
}
var a = createPerson('zhaobw','12');
var b = createPerson('zhangsan','18');
在函数前加了new
系统会自动执行:
(1)var this = new object();
(2)return this;
改进:解决new
function createPerson(name,age)//构造函数
{
this.name = name;
this.age = age;
this.showName = function(){
alert("我的名字:"+this.name);
};
this.age = function(){
alert("我的年龄:"+this.age);
};
}
var a = new createPerson('zhaobw','12');
原型:
改进:解决函数共用的问题
(1)prototype给一组对象添加方法。
(2)解决函数共用了。
-------------------------------------------
function asd(){//构造函数
//不一样的部分放在构造函数
}
asd.prototype.show = funcrion(){
//一样的部分放在原型里
}
--------------------------------------------
json写对象
json里可以放数字,字符串,对象,函数
特点:简单
适用范围:整个程序只有一个对象
--------------------------------------------
命名空间:可以让多个名字相同的函数存在

var zns = {};
zns.common = {};
zns.fs = {};
zns.site = {};
zns.common.getUser = function(){
alert("a");
};
zns.fs.getUser = function(){
alert("a");
};
---------------------------------------------
继承
对象有属性和方法组成
call可以改变函数执行的this
可以通过call来完成继承属性
方法继承:
for(var i in A.prototype) {
B.prototype[i] = A.prototype[i];
}
*引用*
var arr1 = [1,2,3,4]
var arr2 =arr1;
arr1和arr2引用同一块空间
改变arr1时arr2也会发生变化
避免引用:循环一遍就好

 

posted @ 2017-01-25 14:34  赵小妖  阅读(141)  评论(0编辑  收藏  举报